Class nhibernate:如何将两个表映射到一个非持久类?
我有两张类似的表格: 表1: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
[ 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。