NHibernate多对多删除导致外键违规

时间:2009-11-02 23:52:37

标签: nhibernate fluent-nhibernate

我在NHibernate中设置非常简单的问题。 (我正在使用Fluent Nhibernate)

我有两个如下对象,使用双向多对多映射进行设置。

项目

- 分类(IList)

分类

- 项目(IList) - 反向=真

这个模型在db。中预期。

如果我尝试删除项目,NHibernate会在多对多表中执行删除,然后按预期删除项目。

但是,如果我尝试删除一个类别,NHibernate会抛出一个违反外键约束的异常。

我在双方都试验过inverse =“true”,但是当我尝试删除一个Project或一个Category(取决于其中inverse =“true”)时抛出异常。如果我删除inverse =“ “从双方来看,删除在任何一端都按预期工作。但这会在保存和更新时导致双重输入。

谁能告诉我哪里出错了?

1 个答案:

答案 0 :(得分:3)

您是否可能未同步整个对象图?您显示的架构表明Project有一个Categories集合,Category有一个Projects集合。 Hibernate希望您在对象图中保持关联的同步。要删除类别(例如),请先尝试清除其项目集合,然后从与其关联的任何项目的“类别”集合中删除该类别。