通过NHibernate和WCF保留子项删除

时间:2009-12-16 13:49:02

标签: wcf nhibernate

我们希望在我们的WCF服务后面使用NHibernate,但是我们在将子记录删除持久保存到数据库时遇到了问题。

我们在具有IList<>的服务和客户端之间使用DTO。作为子集合类型。当我们使用NHibernate填充DTO时,它将子集合设置为Bag的类型。但是,当通过线路发送时,WCF会将此集合类型更改为Array。

如果我们从数组中删除一条记录并将其传回服务,NHibernate将不会将删除持久存储到数据库中。

我们能不能告诉NHibernate(在映射?中)删除数组中不存在的任何子记录?

2 个答案:

答案 0 :(得分:5)

会话对象上有一个名为SaveOrUpdateCopy的函数,在此方案中特别有用。

SaveOrUpdateCopy(或执行相同操作的Merge)将从数据库加载当前实体并尝试检测已完成的更改(即,集合中的哪些子实体已被删除等)。

以下是博客帖子的链接,其中详细介绍了SaveOrUpdate副本: http://www.codinginstinct.com/2009/11/nhibernate-feature-saveorupdatecopy.html

答案 1 :(得分:0)

您是否考虑过在关系(即列表)上设置cascade ?有关各种选项的更多详细信息,请查看此post