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

从NHibernate中的多对多关联中删除项

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

    我有一个单向多对多关联:ListDefinition类具有IList类型的Columns属性,而一个列可以是多个ListDefinition的一部分。问题是,每当我尝试从一个Columns集合中删除一个列(而不删除它或从其他ListDefinitions中删除它)时,我都会遇到以下错误:
    删除的对象将通过级联重新保存(从关联中删除删除的对象)[域.列表.定义.ListColumnDefinition#2]

    我的映射是通过Fluent NH生成的:

    mapping.HasManyToMany(list => list.Columns)
    .AsList(part => part.Column("`index`"))
    .Cascade.AllDeleteOrphan()
    

    以下是生成的hbm:

    <休眠映射xmlns=“urn:nhibernate-mapping-2.2“default access=”property“auto import=”true“default cascade=”all“default lazy=”false“>
    <类别xmlns=“urn:nhibernate-mapping-2.2“mutable=”true“名称=”域.列表.定义.ListDefinition,域,版本=1.0.0.0,区域性=中性,PublicKeyToken=null“表=” ListDefinition
    <id访问=“骆驼壳-下划线“name=”Id“type=”系统.Int32,mscorlib,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089“>
    <column name=“Id”/>
    <generator class=“identity”/>
    </id>


    <column name=“ListDefinition\u id”/> </key>

    <列名=“ index
    </index>
    <多对多类=“域.列表.定义.ListColumnDefinition,域,版本=1.0.0.0,区域性=neutral,PublicKeyToken=null“>


    </list>

    </等级> </hibernate映射>

    1 回复  |  直到 14 年前
        1
  •  1
  •   Kendrick    14 年前

    “你确定” all-delete-orphan

    第21.3节。上述链路的级联生命周期:

    没有父对象。所以如果我们去掉一个 它将被删除。要做到这一点,我们必须 使用cascade=“all delete orphan”。