首页 文章

管理Nhibernate Relation表的更好方法

提问于
浏览
2

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

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

基本上我正在做的事情:

循环通过A并删除不在B循环到B中的最新内容并添加不在A中的内容

提前致谢 .

1 回答

  • 3

    不确定你的A和B实际上是什么 .

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

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

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

相关问题