EF4:如何重新加载/刷新EntityCollection?

时间:2010-10-08 20:46:37

标签: entity-framework-4 refresh

在C#/ .NET 4.0中使用Entity Framework 4.0。

在我的Entity模型中,我有一个对象(MyObject),它是一对多关系的一部分,它产生类型为EntityCollection<OtherObject>的导航属性。生成代码的片段:

public partial class MyObject : EntityObject
{
    /* other code */

    public EntityCollection<OtherObject> OtherObjects
    {
        get { /* RelationshipManager stuff */ }
        set { /* RelationshipManager stuff */ }
    }

    /* other code */
}

我加载数据很好,一切都很好。然后另一个进程将行添加到底层的OtherObject表。我希望能够重新加载或刷新我的实体集合,以便获得对这些新对象的访问权。

有没有办法做到这一点?以下两种尝试均未完成任务:

Context.Refresh(RefreshMode.StoreWins, myObject);
Context.Refresh(RefreshMode.StoreWins, myObject.OtherObjects);

我想避免必须卸载整个上下文(因为这会强制保存任何当前修改的信息,这是不可取的),那么有没有办法将新添加的数据放入我的本地实体模型中?

感谢。

1 个答案:

答案 0 :(得分:2)

myObject.OtherObjects.Clear();
Context.AcceptAllChanges();
myObject.OtherObjects.Load();

免责声明:未经测试。