有没有办法在一次调用中只刷新一个实体及其所有子实体?

时间:2012-11-01 19:24:55

标签: c# entity-framework entity-framework-4

我有一个子实体作为属性的实体。向用户显示实体列表,可以选择一个实体进行修改,然后保存或取消更改。在实体之间切换不需要保存和取消,因此可能同时有多个对象EntityState.Modified

“保存”按钮正确用于保存所选实体和所有子实体,但“取消”按钮仅恢复对父实体所做的更改,而不会将更改还原为子实体。

是否有一种简单的方法可以在图形中为该对象恢复所有更改,而无需遍历每个导航属性?

我使用以下代码还原更改:

context.Connection.Open();
context.Refresh(RefreshMode.StoreWins, MyEntity);
context.Connection.Close();

我的实体类结构的简化示例如下所示:

class MyEntity
{
    string Name;
    IList<Address> Addresses;
    IList<Contact> Contacts;
    IList<Note> Notes;
}

class Contact
{
    string Name;
    string Title;
    IList<EmailAddress> EmailAddresses;
    IList<Phone> PhoneNumbers;
}

我确实看到了this question,但是该解决方案会将更改还原到所有未保存的实体,而不仅仅是所选实体。

Context.Refresh(RefreshMode.StoreWins, _
    Context.ObjectStateManager.GetObjectStateEntries());

0 个答案:

没有答案