管理 Nhibernate 关系表的更好方法

发布于 2024-10-02 18:53:30 字数 362 浏览 2 评论 0原文

我想知道是否有更好的方法来管理 Nhibernate 中的关系表。目前,当用户第一次创建 AI 时,只需调用 .Save 即可,一切都很好。但是当他们加载它并进行更改时,我不想简单地删除所有相应的记录并重新创建它们。我希望它删除不再有效的记录并创建新的记录,并保留仍然有效且单独存在于数据库中的记录。

目前,我浏览列表并删除不再选择的列表,然后将其添加到新列表中。不过,这似乎不是最好的方法,因为我循环了该列表两次。有 LINQ oneliner 解决方案吗?

基本上我目前正在做的事情:

循环遍历A并删除不在其中的内容 B
循环 B 并添加没有的内容 在A中

致谢。

I am wondering if there is a better way to manage relation tables in Nhibernate. Currently when the user first creates A I can just call .Save and everything is fine. But when they load it and make changes, I don't simply want to delete all the corresponding records and recreate them. I want it to deletes the records that are no longer valid and create the ones that are new and leave the ones that are still valid and in the database alone.

Currently I look through the list and delete the ones that aren't selected anymore then add the ones to the list that are new. Doesn't seem like the best way though since I'm looping through the list twice. Is there LINQ one liner solution out there?

Basically what I'm currently doing:

Loop through A and delete whats not in
B
Loop through B and add whats not
in A

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄荷→糖丶微凉 2024-10-09 18:53:30

不确定你的 A 和 B 到底是什么。

如果它们是某个根实体的子实体,您可以使用cascade="all-delete-orphan"。 NH 将删除不再在列表中的所有子项。

如果你管理一个根实体列表,就需要经历这个“查找添加的项/查找删除的项”业务。

var removedItems = oldList.Except(newList);
var addedItems = newList.Except(oldList);

Not sure what your A's and B's actually are.

If they are children of some root entity, you could use cascade="all-delete-orphan". NH will delete all children which are not in the list anymore.

If you manage a list of root entities, you need to go through this "find added items / find removed items" business.

var removedItems = oldList.Except(newList);
var addedItems = newList.Except(oldList);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文