流利的Nhibernate,与一对多的关系挣扎

时间:2009-08-16 15:13:37

标签: c# fluent-nhibernate orm

好的,我有两张桌子:

Companies
    | id int
    | name varchar(50)

Contacts
    | id int
    | name varchar(50)
    | companyID int

在我的代码中,我有以下类

public class Company
{
    public int Identity { get; set; }
    public string Name { get; set; }
    public IList<Contact> Contacts { get; set; }
}

public class Contact
{
    public int Identity { get; set; }
    public string Name { get; set; }
    public Company Company { get; set; }
}

我的流利nhibernate映射如下:

public class CompanyMapping : ClassMap<Company>
{
    public CompanyMapping()
    {
        WithTable("Companies");

        Id(x => x.Identity, "Id");
        Map(x => x.Name);            
        HasMany<Contact>(x => x.Contacts)                                                
            .Inverse()                
            .LazyLoad()                
            .Cascade.All()
            .AsList();                
    }
}

public class ContactMapping : ClassMap<Contact>
{
    public ContactMapping()
    {
        WithTable("Contacts");

        Id(x => x.Identity, "Id");
        References<Company>(x => x.Company, "CompanyID");
        Map(x => x.Name);
    }
}

然而,当我尝试访问Company.Contacts属性时,我收到以下错误

Invalid column name 'Company_id'.
Invalid column name 'Company_id'.

(在一条消息中是两次)

显然,联系人表格上的关键列不称为Company_id,它名为CompanyID

那么我做错了什么?我似乎无法设置Key Key为WithKeyColumn似乎不存在(这是我在人们已经做过的其他解决方案中找到的,但他们可能会使用不同版本的流利nhibernate给我)

提前致谢

1 个答案:

答案 0 :(得分:4)

Fluent NHibernate - HasMany().WithKeyColumnName

解决了它:)

编辑:

显然,因为我今天在另一个问题上接受了我自己的答案,我还要等两天才能这样做。

那种糟糕但很糟糕。