nhibernate:如何将两个表映射到一个非持久化类?

时间:2009-12-04 07:50:31

标签: class nhibernate mapping

我有两张相似的表格:

表1:

[ id ] | [ name ]

表2:

[ id ] | [ name ]

我需要只使用一个类读取/写入数据:

public class TwinTable
{
   public virtual int Id { get; set; }
   public virtual string Name1 { get; set; }
   public virtual string Name2 { get; set; }
}

另外一个表可能有也可能没有指定Id的实体,并且两个表可能有也可能没有实体,因此Name1可以为null,Name2可以为null,并且它们都可以为null。

我不能改变数据库的结构,如果我必须添加一些东西,这不是一件好事。

希望得到你的帮助!

1 个答案:

答案 0 :(得分:0)

一种解决方案是将Table1映射到一个类,然后将Table2映射为Table1的连接子类。如上所述,连接的子类将像您的TwinTable一样:

<class name="Class1" table="Table1" >
  <id name="Id" column="id">
    <generator class="identity" />
  </id>
  <property name="Name1" column="name" not-null="true" />
</class>

<joined-subclass name="Class2" table="Table2">
  <key column="Id" />
  <property name="Name2" column="name" not-null="true" />
</joined-subclass>