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