我们希望在我们的WCF服务后面使用NHibernate,但是我们在将子记录删除持久保存到数据库时遇到了问题。
我们在具有IList<>的服务和客户端之间使用DTO。作为子集合类型。当我们使用NHibernate填充DTO时,它将子集合设置为Bag的类型。但是,当通过线路发送时,WCF会将此集合类型更改为Array。
如果我们从数组中删除一条记录并将其传回服务,NHibernate将不会将删除持久存储到数据库中。
我们能不能告诉NHibernate(在映射?中)删除数组中不存在的任何子记录?
答案 0 :(得分:5)
会话对象上有一个名为SaveOrUpdateCopy的函数,在此方案中特别有用。
SaveOrUpdateCopy(或执行相同操作的Merge)将从数据库加载当前实体并尝试检测已完成的更改(即,集合中的哪些子实体已被删除等)。
以下是博客帖子的链接,其中详细介绍了SaveOrUpdate副本: http://www.codinginstinct.com/2009/11/nhibernate-feature-saveorupdatecopy.html
答案 1 :(得分:0)