我使用NHibernate 2.1 beta2。
首先是场景:
我的对象分为两部分 - 存根和存根补充。我们的想法是,当数据库中需要一组对象时,只会获取存根。一旦用户访问特定对象并且所访问的字段属于存根补充部分 - 则从数据库中获取相应的存根补充。还有更多,但其余的与我的问题无关。
尽管存根和存根补充表示相同对象的不同部分,但我们无法弄清楚如何在单个映射中表达这种分离,因此有两个映射 - 一个用于存根对象的一部分和另一个 - 对于存根补充,它实现为嵌套在存根中的私有对象。
还有两个注释:
问题:
因为有两个映射(并且,我猜,只有一个版本字段),当一个完全加载的对象(即带有加载的存根补充部分的对象)被更新时,NHibernate会生成两个更新语句,这些语句通常用于同一个表
我们遇到了问题。是否可以将它们合并为一个更新语句?
感谢。
P.S。
以下是一个示例映射文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="SampleProject.Entities.EntityA,SampleProject.Entities" lazy="false" table="EntityA" >
<id name="Id" column="Id" type="int" >
<generator class="native" />
</id>
<version name="m_lastChanged" access="field" column="LastChanged" generated="always" type="Byte[]"/>
<property name="Name" access="property" type="string"/>
<component name="ParentId" class="SampleProject.Entities.EntityId,SampleProject.Entities">
<property name="TypeAsDBValue" access="property" type="string" column="ParentType" />
<property name="IdAsDBValue" access="property" type="string" column="ParentId" not-null="false"/>
</component>
</class>
<class name="SampleProject.Entities.EntityA+StubComplement,SampleProject.Entities" table="EntityA" lazy="false" >
<id name="OwnerId" column="Id" type="int" >
<generator class="native"/>
</id>
<property name="Description" access="property" type="string"/>
</class>
</hibernate-mapping>