避免更新相关表(多对一关系)

时间:2014-05-18 14:44:20

标签: c# nhibernate many-to-one

在保存" parent"时,我遇到了我想避免NH更新我的相关表格的情况。在下面的映射XML中,可以看出我使用了继承 - 其中基类(表)是BaseItem(BaseItemTable),派生类(表)是DerivedClass(DerivedItemTable)。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/inheritance.html#inheritance-tableperclass

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="BaseItem" table="BaseItemTable">
        <id name="Id" column="Id" type="Guid">
            <generator class="guid" />
        </id>
        <property name="ModuleId" column="ModuleId" type="Guid" not-null="true" />
        <property name="CreateDate" column="CreateDate" type="datetime"  not-null="true" />
        <property name="UpdateDate" column="UpdateDate" type="datetime"  not-null="true" />

      <joined-subclass name="DerivedClass" table="DerivedItemTable" >
        <key column="Id"/>
        <many-to-one name="Job" column="JobId" access="readonly" update="false" insert="false" class="Job"/>
        <property name="Filename" column="Filename" type="string" length="255" not-null="true"/>
      </joined-subclass>
    </class>
</hibernate-mapping>

问题是:当我创建DerivedClass的新实例时,在构造期间,我还要求DB获取默认作业 - 并将其放在DerivedClass.Job属性中。实际上,该作业用作所有派生类的模板。

在运行时期间,我更改DerivedClass.Job属性,然后将DerivedClass保存到数据库。结果是正在更新默认作业的属性,尽管在映射XML中显式声明了update="false"

0 个答案:

没有答案