管理Nhibernate Relation表的更好方法

时间:2010-11-18 14:47:02

标签: c# nhibernate linq-to-nhibernate one-to-many

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

目前,我查看列表并删除未选择的列表,然后将这些列表添加到新列表中。看起来不是最好的方法,因为我循环遍历列表两次。那里有LINQ单线解决方案吗?

基本上我正在做的事情:

  

循环浏览A并删除不在的内容   乙
  循环通过B并没有添加什么   在A

提前致谢。

1 个答案:

答案 0 :(得分:3)

不确定你的A和B究竟是什么。

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

如果您管理根实体列表,则需要完成此“查找已添加项目/查找已删除项目”的业务。

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