Fluent NHibernate 映射不在 PK 领域

发布于 2024-08-20 06:56:23 字数 615 浏览 7 评论 0原文

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

Person
------
Id PK
Code
Name

Order
-----
Id PK
Person_Code
OrderDetails

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

I have the following tables and cannot edit their structure...

Person
------
Id PK
Code
Name

Order
-----
Id PK
Person_Code
OrderDetails

Now in my Person class I want to have a list of Orders for that person, but I'm not entirely sure how to go about setting up the mapping in fluent nhibernate to match on the Code column rather than the ID. There is no foreign key constraint and I am unable to change the database to use the keys. Something like this is what I require, but can;t seem to figure out the mapping.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

禾厶谷欠 2024-08-27 06:56:23

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

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

PropertyRef 方法可从 rev 614 获取,因此您可能需要更新 Fluent nhibernate 版本。

You define your column with the KeyColumn method. It should work regardless of existence of a foreign key constraint.

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

PropertyRef method is available from rev 614 so you may need to update the fluent nhibernate version.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文