我正在尝试通过反射和EntitySetName进行通用刷新。
那么有效的是:
base.Refresh(RefreshMode.StoreWins, this.Selections);
我想做的是:
base.Refresh(RefreshMode.StoreWins, this.GetType().GetProperty("Selections").GetValue(this, null));
但是这给了我以下例外:
要刷新的对象集合中索引X处的元素具有null EntityKey属性值,或者未附加到此ObjectStateManager。
有什么方法可以让我的工作吗?
答案 0 :(得分:0)
GetValue只返回object
,而Refresh(显然)不会在内部将其转换为实际类型。如果你想在你的方法中做这个演员,那你就回到了你开始的地方(必须知道this.Selections
)。
您唯一的机会是制作Refresh<T>
等通用方法,以便直接刷新ObjectSet
:
base.Refresh(RefreshMode.StoreWins, this.CreateObjectSet<T>());