Fluent NHibernate映射不在PK字段上

Fluent NHibernate映射不在PK字段上,nhibernate,fluent-nhibernate,orm,Nhibernate,Fluent Nhibernate,Orm,我有以下表格,无法编辑其结构 Person ------ Id PK Code Name Order ----- Id PK Person_Code OrderDetails 现在在我的Person类中,我想为那个人创建一个订单列表,但我不完全确定如何在fluent nhibernate中设置映射以匹配代码列而不是ID。没有外键约束,我无法更改数据库以使用键。我需要这样的东西,但我可以;我似乎没有弄清楚地图 public class Person { public virtual i

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

Person
------
Id PK
Code
Name

Order
-----
Id PK
Person_Code
OrderDetails
现在在我的Person类中,我想为那个人创建一个订单列表,但我不完全确定如何在fluent nhibernate中设置映射以匹配代码列而不是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; }
}
公共类人物
{
公共虚拟整数Id{get;set;}
公共虚拟字符串代码{get;set;}
公共虚拟IList命令{get;private set;}
}
公共阶级秩序
{
公共虚拟整数Id{get;set;}
公共虚拟字符串OrderDetails{get;set;}
公共虚拟人所有者{get;set;}
}

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

class PersonMap : ClassMap<Person>
{
    public PersonMap()
    {
        HasMany(p => p.Order)
            .KeyColumn("Person_Code")
            .PropertyRef("Code");
    }
}
classpersonmap:ClassMap
{
公众人物地图()
{
HasMany(p=>p.Order)
.KeyColumn(“人员代码”)
.PropertyRef(“代码”);
}
}

PropertyRef方法可从中获得,因此您可能需要更新fluent nhibernate版本。

但它如何知道应该在Person表中的哪一列进行比较呢?我第一次错过了,抱歉。我更新了答案以反映您的问题。我想我一定使用了旧版本的Fluent库,因为我没有获得PropertyRef方法。将尝试更新。有人可以提供任何帮助吗?