2010-02-04 58 views
4

我试图通过清除集合(list.clear())或在父级上创建集合的新实例来清除父/子关系中的集合。NHibernate一次性删除

与此类似: http://markmail.org/message/mnvooa7g57dlbxta#query:+page:1+mid:mnvooa7g57dlbxta+state:results

我的测试是几乎等同于一个在上面的链接。我尝试了几种设置的组合,但对于我的生活,我无法让NHibernate为每个子对象发出一个sql删除,而不是每个子对象的sql删除。我肯定错过了什么。

+0

你能发布你的代码吗? – David 2010-02-04 22:55:21

+0

我可以在今晚晚些时候发布代码。我在Oren的相同测试中做了一个例子,但是使用Fluent做了映射,从那里我尝试了几个变种。 – 2010-02-05 02:06:00

回答

2

有趣的帖子。你在NHibernate Jira中跟踪了ayendes problem吗?我试图和谢尔盖Koshcheyev标记为'不是一个问题',因为inverse = true映射,似乎禁止一次性删除工作,这意味着我反相映射禁止删除孤儿正常工作,导致孤儿似乎太过独立了。 (不确定这是否是正确的形容词)

尝试从父代进行单向映射(如果可能的话),而不是使子代更加依赖并且(希望)可以一次性删除。

+0

有趣的是,我从来没有想过,也许一枪只会删除一对多的单向关联。我会试一试看看。 – 2010-02-05 02:08:40

+0

我尝试了单向关联,并得到了相同的结果。也许它已在2.12中删除。这不是什么大不了的事情,我只是想让它起作用。 – 2010-02-06 19:04:58

0

一次性删除可能会产生意想不到的副作用,所以我认为NHibernate播放起来很安全,只会删除从该集合中清除的子节点。当然你可以使用hql来编写自己的删除。

+0

的确,我可以编写hql,我更加好奇为什么我无法使其工作,并且可能删除了功能。 – 2010-02-06 19:06:38