NHibernate重新创建没有一个属性的实体

时间:2018-01-25 08:53:30

标签: c# sql-server nhibernate

我对NH 3.4.1

有疑问

我有这样的映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly=..." namespace="...">
    <class name="ProductCategory" table="dbo.ProductCategory">

    .....
    <bag name="ParentRelations" table="ProductCategoryRelation" lazy="true" batch-size="100">
      <key column="ProdCatRelCatNumber" />
      <one-to-many class="CategoryRelation" />
    </bag>      
    </class>
</hibernate-mapping>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="..." namespace="...">
    <class name="CategoryRelation" table="dbo.ProductCategoryRelation">
        <composite-id>
            <key-many-to-one name="Parent" class="ProductCategory" column="ProdCatRelParentCatNumber" />
            <key-many-to-one name="Child" class="ProductCategory" column="ProdCatRelCatNumber" />
        </composite-id>
        <property name="Priority" column="ProdCatRelPriority" />
    </class>
</hibernate-mapping>

所以我有一个与另一个实体有一对多关系的实体。关系表包含重要的优先级列。

问题是当我仅更新CategoryRelation实体的优先级列时--NH生成一个UPDATE,但是当我创建新关系或删除现有关系时 - 它为所有关系创建DELETE并为每个关系创建INSERT。没关系。我知道idbag,但我不能在这里使用它。

主要问题是 - 当它创建INSERT时 - 它跳过优先级列。所以插入/删除后我的所有优先级都丢失了。你知道问题出在哪里吗?我很确定它是映射问题,但无法找到并修复。

我所需要的只是让它记住优先级并将它们与关系一起插入。

感谢。

0 个答案:

没有答案