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

NHibernate多对多并删除项目

  •  0
  • ulu  · 技术社区  · 14 年前

    我在列表和ListItems之间有一个多对多的关联:列表知道它的项,但是ListItem不知道包含列表的内容。级联是saveupdate。

    所以,每当我试图删除ListItem实体时,就会收到一个SQLException,说我破坏了引用完整性。NHibernate尝试删除我的ListItem,而不删除链接表中相应的行。问题是,是否可以指示NHibernate在不破坏引用完整性的情况下删除我的ListItem?

    非常感谢你的建议。

    乌卢

    1 回复  |  直到 14 年前
        1
  •  0
  •   Community pid    7 年前

    您需要将子对象上的映射设置为 inverse=true . 从 another thread :

    首先删除所有子对象 物体。那么,因为 NHibernate还试图设置 子表中的外键列 设置为空。因为这些行已经 已删除,您将收到第二个 你的关系有一方面需要解决 这个。这通常是在一个 别这样,尼伯内特会让你 每一方的适当更新 关系的一部分。

    public class StoreMap : ClassMap<Store>
    {
      public StoreMap()
      {
        Id(x => x.Id);
        Map(x => x.Name);
        HasMany(x => x.Staff)
          .Inverse()         // Magic code!
          .Cascade.All();
      }
    }