2009-12-16 47 views
0

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

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

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

是否有某种方式可以告诉NHibernate(在映射中?)删除Array中不存在的任何子记录?

回答

5

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

SaveOrUpdateCopy(或合并,它会做同样的事情)将从数据库中加载当前实体,并尝试检测已做了哪些更改(即集合中的哪些子实体已被删除等)。

下面是该进入更详细的关于SaveOrUpdate副本博文链接: http://www.codinginstinct.com/2009/11/nhibernate-feature-saveorupdatecopy.html

+0

是的,这完美地完成了这项工作 - 谢谢! – Matt 2009-12-16 14:06:44

0

你看着的关系(即表)设置cascade?有关各种选项的更多详细信息,请查看post