【发布时间】:2014-02-10 12:43:04
【问题描述】:
我有当前的场景:
我首先使用 EF6 代码,并创建了一个类似这样的数据模型:
public class MainObject{
..some properties
IList<SubObject> SubObjects{get;set;}
}
public class SubObject{
..some properties
IList<SubSubObject> SubSubObjects{get;set;}
}
public class SubObject{
..some properties
IList<SubObject> SubObjects{get;set;}
}
所以基本上我有一个主对象,它有 0 到多个子对象,并且子对象和子子对象之间存在多对多关系。
我正在创建一个 MVC 应用程序,所以我的正常程序流程是用户请求一个基本上使用 MainObject 作为其数据模型的页面。然后用户与页面交互并随心所欲地更改、添加或删除子对象和子子对象,然后单击保存。保存时,对象图被发送回控制器,根据用户在客户端所做的更改,它看起来是正确的。现在我的问题如下:
如何以良好的方式将其存储回数据库。
我需要将我的对象重新附加到上下文中,但我不知道哪些对象是新的、修改的或删除的。
我已经编写了一些现在可以部分工作的代码,但它变得如此丑陋,以至于我真的不想走这条路。是否有可能以某种方式从数据库中获取相关对象图,并让 EF 将两个图相互比较,然后将相关更改保存到数据库中?
我们将不胜感激任何有助于使这更顺畅的帮助。
【问题讨论】:
-
您可能想试试GraphDiff。我从未尝试过,但它看起来很有希望。
-
@GertArnold - 实际上,我昨晚试过了,它以非常好的方式解决了我的问题。所以强烈推荐。如果您想将该评论作为答案,我很乐意将其标记为已接受:)
-
您介意回答您自己的问题(在 StackOverflow 上可以)并简要说明您做了什么吗?和我比起来,你已经是专家了!我很乐意投票。
-
@GertArnold - 可能是个好主意 :) 完成。
标签: entity-framework save entity-framework-6 detach