我想知道是否有更好的方法来管理Nhibernate中的关系表。目前,当用户首次创建A时,我可以调用.Save,一切都很好。但是当他们加载并进行更改时,我不只是想删除所有相应的记录并重新创建它们。我希望它删除不再有效的记录并创建新的记录,并保留那些仍然有效且仅在数据库中的记录。
目前,我查看列表并删除未选择的列表,然后将这些列表添加到新列表中。看起来不是最好的方法,因为我循环遍历列表两次。那里有LINQ单线解决方案吗?
基本上我正在做的事情:
循环浏览A并删除不在的内容 乙
循环通过B并没有添加什么 在A
提前致谢。
答案 0 :(得分:3)
不确定你的A和B究竟是什么。
如果他们是某个根实体的孩子,您可以使用cascade =“all-delete-orphan”。 NH将删除所有不在列表中的孩子。
如果您管理根实体列表,则需要完成此“查找已添加项目/查找已删除项目”的业务。
var removedItems = oldList.Except(newList);
var addedItems = newList.Except(oldList);