我正在使用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映射文件?
感谢您的帮助, 科拉伊
答案 0 :(得分: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); }
}
(我假设你知道如何做第一部分;如果你不知道,请告诉我)