OneToManyPersister GenerateInsertRowString()创建UPDATE语句

时间:2012-04-12 20:59:09

标签: nhibernate

为什么NHibernate中的OneToManyPersister在调用GenerateInsertRowString()时会创建Update语句?

我有单向的一对多关系,我需要保存级联,但是当集合调用PerformInsert时,会发出更新。

以下是我的映射。我们正在使用存储库模式。 “Root”有一个“Parent”,“Parent”有一个“Child”列表。存储库保存“Root”和“Parent”,其“Child”列表应通过级联保存。

<class name="Root">
    <id name="Id">
        <generator class="My.DomainModel.NHibernate.AssignedOrGuidCombIdGenerator, My.DomainModel.NHibernate" />
    </id>
    <version name="Version" unsaved-value="0" />

    <many-to-one name="Parent" column="ParentId" unique="True" />
</class>

<class name="Parent">
    <id name="Id">
        <generator class="My.DomainModel.NHibernate.AssignedOrGuidCombIdGenerator, My.DomainModel.NHibernate" />
    </id>
    <version name="Version" unsaved-value="0" />
    <list name="Children" cascade="all">
        <key column="ParentId"/>
        <index column="Position"/>
        <one-to-many class="Child"/>
    </list>
</class>

<class name="Child" discriminator-value="G">
    <id name="Id">
        <generator class="My.DomainModel.NHibernate.AssignedOrGuidCombIdGenerator, My.DomainModel.NHibernate" />
    </id>
    <discriminator column="ChildType" type="char" />
    <version name="Version" unsaved-value="0" />

    <subclass name="SubChild1" discriminator-value="N">
        <many-to-one name="AnotherClass1" column="Another1Id"/>
    </subclass>

    <subclass name="SubChild2" discriminator-value="A">
        <many-to-one name="AnotherClass2" column="Another2Id"/>            
    </subclass>
</class>

0 个答案:

没有答案