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

Class nhibernate:如何将两个表映射到一个非持久类?,class,nhibernate,mapping,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; } } 加上其中一个表可能有也可能没有指定I

我有两张类似的表格:

表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

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


希望你的帮助

一种解决方案是将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>

一种解决方案是将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>


我发现你的问题有点难理解:-(。为了获得答案,我建议你改进一下你的文本,并在表格上添加一些精确的信息(SQL create或其他)。好的,我增强了文本。希望这足够理解。我发现你的问题有点难理解:-(.为了获得答案,我建议您改进一下文本,并在表上添加一些精确的信息(SQL create或其他)。好的,我已经增强了文本。希望这足以理解..但是..我看到联接子类的键列是“Id”因此,我猜如果表ID中没有ID为1的条目,在表2中有一个ID为1的条目,那么孪生实例将是空的,因为表2不能连接到NULL。我错了吗?这是正确的。您可能还想考虑使用一个联合子类,这在这里被很好地描述了。但是…我看到连接子类的键列是“ID”。因此,我猜想如果表ID中没有ID为1的条目,表ID中有一个ID为1的条目,那么孪生实例将是空的,因为表2不能被连接到NULL。