2010-11-18 21 views
2

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

目前我查看列表并删除未选中的列表,然后将列表添加到新列表中。虽然看起来并不是最好的方式,但我已经两次遍历列表。那里有LINQ单线解决方案吗?

基本上目前我在做什么:

遍历A和到B删除什么不 乙
循环,并添加什么不 在一个

在此先感谢。

回答

3

不知道你的A和B的实际是什么。

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

如果您管理一个根实体列表,您需要通过这个“查找添加项目/查找删除项目”业务。

var removedItems = oldList.Except(newList); 
var addedItems = newList.Except(oldList); 
相关问题