1
我有一組表,這些表如下所示:NHibernate的繼承映射
Person - PersonID, FirstName, LastName, etc...<br/>
Family - FamilyID, etc...<br/>
Parent - PersonID, FamilyID, etc...<br/>
Child - PersonID, FamilyID, etc...<br/>
Contact- PersonID, etc...<br/>
如下(使用C#)我的對象層次的組織:
class Person
class Family
interface IFamilyMember
class Parent : Person, IFamilyMember
class Child : Person, IFamilyMember
class Contact : Person
使用NHibernate - 我目前如下所示映射每個經由連接子類的子類的人的(不相關的字段被移除):
<!-- Parent -->
<joined-subclass name="Parent" table="Parent">
<key column="PersonID" />
<many-to-one name="Family" column="FamilyID" cascade="save-update" />
</joined-subclass>
<!-- Child -->
<joined-subclass name="Child" table="Child">
<key column="PersonID" />
<many-to-one name="Family" column="FamilyID" cascade="save-update" />
</joined-subclass>
<!-- Child -->
<joined-subclass name="Contact" table="Contact">
<key column="PersonID" />
</joined-subclass>
的問題是,我真的很希望能夠對IFamilyMember接口執行查詢,並與當前的映射,NHibernate的不允許執行HQL查詢,如「From IFamilyMember」。我還希望能夠通過其他標準來選擇 - 「來自IFamilyMember m,其中m.Name.First ='blah'。如何映射這組類以便我可以通過名稱等選擇家庭成員。 ?我必須修改我的類層次結構,使得IFamilyMember包含我希望查詢的屬性(名稱,等...)?
感謝您的幫助!
我試圖刪除字段/屬性與討論無關。Parent和C hild具有其他字段,這些字段在它們和從Person繼承的其他類型之間並不常見。這些領域足夠多並且足夠專業化,以至於他們不認爲這將是他們成爲Person實體的一部分的好設計。 – Krazzy 2009-06-15 14:38:33