Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法在一次调用中只刷新一个实体及其所有子实体?_C#_Entity Framework_Entity Framework 4 - Fatal编程技术网

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

C# 有没有办法在一次调用中只刷新一个实体及其所有子实体?,c#,entity-framework,entity-framework-4,C#,Entity Framework,Entity Framework 4,我有一个实体,它有一堆子实体作为属性。用户将看到一个实体列表,可以选择一个进行修改,然后保存或取消更改。在实体之间切换时不需要保存和取消,因此可能一次有多个对象是EntityState.Modified “保存”按钮可以正确地保存选定实体和所有子实体,但是“取消”按钮仅恢复对父实体所做的更改,而不恢复对子实体所做的更改 有没有一种简单的方法可以在不遍历每个导航属性的情况下还原该对象在图形中的所有更改 我正在使用以下代码还原更改: context.Connection.Open(); contex

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

我假设您正在还原的对象是实例而不是数据库?你能不能不重新提取数据?@Bob。该实体通过引用传递给我的DAL,并在几个不同的位置使用,因此我希望保留对现有实体的引用,而不是将其完全替换为实体的新实例。我假设它太大,无法保存为模板,以便您可以使用模板还原更改?i、 e.
实体baseObj=参考对象
instanceObj.ChildField=baseObj.ChildField我认为没有。也许,如果您仍然可以修改代码,那么首先应该防止修改实体,即使用视图模型/DTO并在域中重放更改。尽管这也会涉及不止一个电话。
Context.Refresh(RefreshMode.StoreWins, _
    Context.ObjectStateManager.GetObjectStateEntries());