2010-11-04 63 views
1

我有一种情况,数据库在两个表之间具有一对一的关系,它们一起清楚地表示相同的逻辑实体。一对一的NHibernate映射,其中所有字段映射到单个类中的属性

我想将这些表映射到相同的类,并具有类映射到BOTH表的字段的属性。 (I.E.而不是一个班级组成另一个班级)。

因此,如果表如下所示:

表foo 列:ID(PK),描述FavouriteCrispFlavour

表酒吧 列:ID(PK),NumberOfArms,EyeColour

我想我的班级看起来像下面这样:

public class FooBar 
{ 
    public virtual int Id {get;set;) 
    public virtual string Description {get;set;) 
    public virtual CrispFlavour FavouriteCrispFlavour {get;set;) 
    public virtual int NumberOfArms {get;set;) 
    public virtual EyeColour EyeColour {get;set;) 
} 

这个映射可能在NHibernate中吗?

回答

2

是的,它被称为连接映射。您使用<join>元件与table属性从多个表组成的实体,例如:

<class name="MyClass"> 
    ... 
    <join table="otherTable"> 
    <key column="MyClass_Id"/> 
    <property name="propInOtherTable" /> 
    </join> 
</class> 

对于一个完整的(更好)描述,请参阅NHibernate documentationjoin mappings

+0

今天,我热爱NHIbernate和Stack Overflow。这个页面还介绍了如何在Fluent NHibernate中实现这种映射:http://stackoverflow.com/questions/1241005/how-to-join-table-in-fluent-nhibernate – David 2010-11-05 09:03:01

+0

哈!我从你的网站上看到,你对Fluent NH自己是一个权威... – David 2010-11-05 09:04:22

+0

你可以这么说...... :) – 2010-11-05 09:43:06

0

是的,我相信你只需要在HQL中指定连接。