我经历了几个NHibernate映射教程,但这部分对我来说似乎并不复杂。我在ayende的网站上找到的一个是使用超类中的歧视值来解释每个班级的表格。就我而言,我没有使用歧视值。
我该如何映射?
我有类似以下的类结构。
两者,'学生'和老师'课程继承自“人”。抽象类。我需要将每个类映射到一个表而不使用超类中的歧视值。
答案 0 :(得分:1)
假设有三个表:PersonTable
,StudentTable
,TeacherTable
。我们可以使用
映射到 PersonTable 的基类将包含公共属性,并生成ID
。将为 StudentTable 和 TeacherTable 提供来自父母的ID
<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>
现在我们每个超级和子类都有表,没有鉴别器