我有以下表格,无法编辑其结构......
Person
------
Id PK
Code
Name
Order
-----
Id PK
Person_Code
OrderDetails
现在在我的Person类中,我希望有一个该人的订单列表,但我不完全确定如何设置流畅的nhibernate映射以匹配Code列而不是ID。没有外键约束,我无法更改数据库以使用密钥。像这样的东西是我需要的东西,但是它似乎可以找出映射。
public class Person
{
public virtual int Id { get; set; }
public virtual string Code { get; set; }
public virtual IList<Order> Orders { get; private set; }
}
public class Order
{
public virtual int Id { get; set; }
public virtual string OrderDetails { get; set; }
public virtual Person Owner { get; set; }
}
答案 0 :(得分:2)
使用KeyColumn方法定义列。无论是否存在外键约束,它都应该有效。
class PersonMap : ClassMap<Person>
{
public PersonMap()
{
HasMany(p => p.Order)
.KeyColumn("Person_Code")
.PropertyRef("Code");
}
}
PropertyRef方法可从rev 614获得,因此您可能需要更新流畅的nhibernate版本。