流畅的NHibernate映射不在PK字段上

时间:2010-02-03 15:15:05

标签: nhibernate fluent-nhibernate orm

我有以下表格,无法编辑其结构......

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; }
}

1 个答案:

答案 0 :(得分:2)

使用KeyColumn方法定义列。无论是否存在外键约束,它都应该有效。

class PersonMap : ClassMap<Person>
{
    public PersonMap()
    {
        HasMany(p => p.Order)
            .KeyColumn("Person_Code")
            .PropertyRef("Code");
    }
}

PropertyRef方法可从rev 614获得,因此您可能需要更新流畅的nhibernate版本。