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