我在NHibernate中设置非常简单的问题。 (我正在使用Fluent Nhibernate)
我有两个如下对象,使用双向多对多映射进行设置。
项目
- 分类(IList)
分类
- 项目(IList) - 反向=真
这个模型在db。中预期。
如果我尝试删除项目,NHibernate会在多对多表中执行删除,然后按预期删除项目。
但是,如果我尝试删除一个类别,NHibernate会抛出一个违反外键约束的异常。
我在双方都试验过inverse =“true”,但是当我尝试删除一个Project或一个Category(取决于其中inverse =“true”)时抛出异常。如果我删除inverse =“ “从双方来看,删除在任何一端都按预期工作。但这会在保存和更新时导致双重输入。
谁能告诉我哪里出错了?
答案 0 :(得分:3)
您是否可能未同步整个对象图?您显示的架构表明Project有一个Categories集合,Category有一个Projects集合。 Hibernate希望您在对象图中保持关联的同步。要删除类别(例如),请先尝试清除其项目集合,然后从与其关联的任何项目的“类别”集合中删除该类别。