【问题标题】:Fluent NHibernate Mapping not on PK FieldFluent NHibernate Mapping 不在 PK 场上
【发布时间】:2010-02-03 15:15:05
【问题描述】:

我有以下表格,无法编辑它们的结构...

Person
------
Id PK
Code
Name

Order
-----
Id PK
Person_Code
OrderDetails

现在,在我的 Person 类中,我想要一个该人的 Orders 列表,但我不完全确定如何在 fluent 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; }
}

【问题讨论】:

    标签: nhibernate fluent-nhibernate orm


    【解决方案1】:

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

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

    rev 614 提供了 PropertyRef 方法,因此您可能需要更新 fluent nhibernate 版本。

    【讨论】:

    • 但是它怎么知道它也应该比较 Person 表中的哪一列呢?
    • 我第一次错过了,对不起。我更新了答案以反映您的问题。
    • 我想我必须使用旧版本的 Fluent lib,因为我没有得到 PropertyRef 方法。将尝试更新。
    • 有人可以在stackoverflow.com/questions/16840521/… 上提供任何帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多