Nhibernate将多个表映射到同一个列表

时间:2014-04-22 18:06:16

标签: mysql sql nhibernate mapping nhibernate-mapping

我有多个对象意味着来自通量的各个步骤(每个对象是一个步骤),它们将被保留在DB中。
我正在考虑创建一个关系表,我将拥有每个关联,每行只有一个关系。例如,每个例子:

  • 步骤:Id,Course_Id,Evaluation_Id,ProcessEvaluation_Id

并澄清:

  • StepsForClass :id,class_id,steps_id
  • 课程:id,someMoreinfo
  • 评估:id,someOtherinfo

等......

在表格中引用:

  • :Id,StepsForClass_id,someInfo

我怎么能把它映射成类似的东西:

public class Klass
{
   public uint Id { get; set; }
   public IList<Step> Steps { get; set; }
}

public abstract class Step
{
   public uint Id { get; set; }
   public abstract void Apply();
}

public class Course : Step
{
   //( some more fields )
   public override void Apply() { /* ... */ } 
}


public class Evaluation : Step
{
   //( some other more fields )
   public override void Apply() { /* ... */ } 
}

1 个答案:

答案 0 :(得分:1)

您可以使用这样的继承映射:

<class name="Step" table="STEP">
    <id name="Id" type="Int64" column="STEP_ID">
        <generator class="native"/>
    </id>
    <property name="Amount" column="AMOUNT"/>
    ...
    <joined-subclass name="Course" table="COURSE">
        <key column="STEP_ID"/>
        ...
    </joined-subclass>
    <joined-subclass name="Evaluation" table="EVALUATION">
        <key column="STEP_ID"/>
        ...
    </joined-subclass>
</class>

进一步阅读:inheritance mapping