0
我想在nhibernate代碼中設置table-per-classhierarchy繼承。除了子類外,其他所有內容都在XML映射文件中設置。如果我在XML中的子類一切都很好,但不是來自代碼。這是我使用的代碼 - 我的具體子類,從來沒有被創建:(代碼中的nhibernate子類
//the call
NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration();
SetSubclass(config, typeof(TAction), typeof(tActionSub1), "Procedure");
//the method
public static void SetSubclass(Configuration configuration, Type baseClass, Type subClass, string discriminatorValue)
{
PersistentClass persBaseClass = configuration.ClassMappings.Where(cm => cm.MappedClass == baseClass).Single();
SingleTableSubclass persSubClass = new SingleTableSubclass(persBaseClass);
persSubClass.ClassName = subClass.AssemblyQualifiedName;
persSubClass.DiscriminatorValue = discriminatorValue;
persSubClass.EntityPersisterClass = typeof(SingleTableEntityPersister);
persSubClass.ProxyInterfaceName = (subClass).AssemblyQualifiedName;
persSubClass.NodeName = subClass.Name;
persSubClass.EntityName = subClass.FullName;
persBaseClass.AddSubclass(persSubClass);
}
XML映射看起來是這樣的:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Riz.Pcm.Domain.BusinessObjects" assembly="Riz.Pcm.Domain">
<class name="Riz.Pcm.Domain.BusinessObjects.TAction, Riz.Pcm.Domain" table="dbo.tAction" lazy="true">
<id name="Id" column="ID">
<generator class="guid" />
</id>
<discriminator type="String" formula="(select jt.Name from TJobType jt where jt.Id=JobTypeId)" insert="true" force="false"/>
<many-to-one name="Session" column="SessionID" class="TSession" />
<property name="Order" column="Order1" />
<property name="ProcessStart" column="ProcessStart" />
<property name="ProcessEnd" column="ProcessEnd" />
<property name="Status" column="Status" />
<many-to-one name="JobType" column="JobTypeID" class="TJobType" />
<many-to-one name="Unit" column="UnitID" class="TUnit" />
<bag name="TActionProperties" lazy="true" cascade="all-delete-orphan" inverse="true" >
<key column="ActionID"></key>
<one-to-many class="TActionProperty"></one-to-many>
</bag>
<!--<subclass name="Riz.Pcm.Domain.tActionSub" discriminator-value="ZPower"></subclass>-->
</class>
</hibernate-mapping>
我在做什麼錯了,我無法找到任何的例子嗎? 。谷歌:(