如何通过Entity Framework中的反射刷新ObjectSet?

时间:2014-04-11 12:18:19

标签: c# entity-framework reflection

我正在尝试通过反射和EntitySetName进行通用刷新。

那么有效的是:

base.Refresh(RefreshMode.StoreWins, this.Selections);

我想做的是:

base.Refresh(RefreshMode.StoreWins, this.GetType().GetProperty("Selections").GetValue(this, null));

但是这给了我以下例外:

  

要刷新的对象集合中索引X处的元素具有null EntityKey属性值,或者未附加到此ObjectStateManager。

有什么方法可以让我的工作吗?

1 个答案:

答案 0 :(得分:0)

GetValue只返回object,而Refresh(显然)不会在内部将其转换为实际类型。如果你想在你的方法中做这个演员,那你就回到了你开始的地方(必须知道this.Selections)。

您唯一的机会是制作Refresh<T>等通用方法,以便直接刷新ObjectSet

base.Refresh(RefreshMode.StoreWins, this.CreateObjectSet<T>());