代码之家  ›  专栏  ›  技术社区  ›  William

NHibernate多对多删除导致外键冲突

  •  3
  • William  · 技术社区  · 17 年前

    我对NHibernate中一个非常简单的设置有问题(我用的是流利的英语)

    我有两个对象,如下所示,设置为双向多对多映射。

    项目

    类别

    --项目(IList)--反向=真

    该模型与数据库中的预期一致。

    如果我试图删除一个项目,NHibernate将在多对多表中执行删除操作,然后按预期删除该项目。

    然而,如果我试图删除一个类别,NHibernate会抛出一个异常,它将违反外键约束。

    1 回复  |  直到 17 年前
        1
  •  3
  •   RMorrisey    17 年前

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