2013-01-13 93 views
0

我經歷了幾個NHibernate映射教程,但這部分對我來說似乎並不複雜。一個我在ayende的網站上發現,這個網站使用超類中的歧視值來解釋每班的表格。在我的情況下,我沒有使用歧視值。用於繼承的每類nhibernate映射表。怎麼樣?

如何映射此?

我有類似於以下的類結構。

enter image description here

兩個「學生」和「老師」類都是從「人」的抽象類繼承。我需要將每個類映射到一張表,而不要在超類中使用歧視值。

回答

1

假設有三個表格:PersonTable,StudentTable,TeacherTable。我們可以使用映射

基類代碼PersonTable將包含公共屬性,並有產生IDStudentTableTeacherTable會從父

<class name="Person" table="PersonTable" abstract="true"> 
    <id name="PID" type="Int32" column="PersonId"> 
    <generator class="native"/> 
    </id> 

    <!-- common properties of a Person --> 
    <property name="FirstName" /> 
    <property name="LastName" /> 
    <property name="DOB" /> 
    <property name="Gender" /> 

    <!-- Student and its own table --> 
    <joined-subclass name="Student" table="StudentTable"> 
     <key column="SutdentID"/> <!-- Filled with PersonId value from a base --> 
     <property name="Grade" /> 
    </joined-subclass> 

    <!-- Teacher and its own table --> 
    <joined-subclass name="Teacher" table="TeacherTable"> 
     <key column="TeacherId"/><!-- Filled with PersonId value from a base --> 
     <property name="Subjects" /> 
    </joined-subclass>  
</class> 

現在我們必須每每個超和子類表中提供的ID,沒有鑑別