gpt4 book ai didi

entity-framework - 在 EF6 中存储复杂的分离对象图

转载 作者:行者123 更新时间:2023-12-04 07:27:02 25 4
gpt4 key购买 nike

我有当前的场景:

我首先使用 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 作为数据模型的页面。然后用户与页面交互并根据需要更改、添加或删除子对象和子子对象,然后单击保存。保存时,对象图被发送回 Controller ,根据用户在客户端所做的更改,它看起来是正确的。现在我的问题如下:

如何以良好的方式将其存储回数据库。

我需要将我的对象重新附加到上下文中,但我不知道哪些对象是新的、修改的或删除的。

我已经写了一些现在部分工作的代码,但它变得如此丑陋,我真的不想走这条路。是否有可能以某种方式从数据库中获取相关的对象图,并让 EF 将两个图相互比较,然后将相关更改保存到数据库中?

任何使这更顺畅的帮助将不胜感激。

最佳答案

我最终使用了 GraphDiff为我解决这个问题,而且效果很好!这确实应该内置到 EF 中,但在它内置之前,这是一个很好的替代品。

为了解决上面我的问题中给出的示例,这将确保分离图得到正确保存(假设我有一个 MainObject 我想保存称为 main):

context.UpdateGraph(main, map =>map
.AssociatedCollection( m => m.SubObjects, with => with
.AssociatedCollection( s => s.SubSubObjects)
)
);

context.SaveChanges();

关于entity-framework - 在 EF6 中存储复杂的分离对象图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com