1

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

Save 按钮可以正确地保存所选实体和所有子实体,但是 Cancel 按钮仅恢复对父实体所做的更改,而不会恢复对子实体的更改。

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

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

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;
}

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

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

0 回答 0