3

我正在使用 nhibernate 3.3.1 和 fluent-nhibernate 1.3。我尝试用流利的方式映射以下实体:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Person> Relations { get; set; }
}

正如你所看到的,我的人与其他一些人有关系。所以我将 DB-Table 建模如下:

    | Persons
----+----------------------
 PK | Id int
    | Name nvarchar(100)

    | Relations
----+----------------------
 PK | Id int
 FK | Person1Id int
 FK | Person2Id int

所以我想要一个映射,其中加载了人的关系,无论实际的人被引用为 Person1Id 还是 Person2Id。

流利的可以吗?如果没有,是否可以使用 hbn.xml 映射文件?

谢谢你的帮助,科雷

4

1 回答 1

0

你不能直接映射它。您需要创建两个属性:

public virtual IList<Person> Relations1 { get; set; }
public virtual IList<Person> Relations2 { get; set; }

然后创建一个合并它们的投影属性:

public virtual IEnumerable<Person> Relations
{
    get { return Relations1.Concat(Relations2); }
}

(我假设你知道如何做第一部分;如果你不知道,请告诉我)

于 2012-07-01T21:18:14.500 回答