Fluent nhibernate Fluent NHibernate-将2个表映射到一个类

Fluent nhibernate Fluent NHibernate-将2个表映射到一个类,fluent-nhibernate,Fluent Nhibernate,我有两个表,我想映射到一个类,看起来像: CUSTOMER_INFO_CLASS.cs ---------------------- Id (CUSTOMER table) CustomerName (CUSTOMER table) CustomerTypeDesc (CUSTOMER_TYPE table) Select Id, CustomerName, CustomerAddress, CustomerTypeDesc From CUSTOMER t1 Left join CUST

我有两个表,我想映射到一个类,看起来像:

CUSTOMER_INFO_CLASS.cs
----------------------
Id (CUSTOMER table) 
CustomerName (CUSTOMER table)
CustomerTypeDesc (CUSTOMER_TYPE table)
Select Id, CustomerName, CustomerAddress, CustomerTypeDesc
From CUSTOMER t1
  Left join CUSTOMER_TYPE t2
    On t1.CustomerTypeCode = t2.CustomerType
我尝试使用join进行此操作,如下所示:

Table("CUSTOMER");

Id(x => x.ID).Length(10).Column("CustomerId");
Map(x => x.CustomerName);

Join("CUSTOMER_TYPE", m =>
    {
    m.Optional();
    m.Map(x => x.CustomerTypeDesc);
    m.KeyColumn("CustomerType");
    });
问题是,我试图链接这两个表的字段在其中任何一个表中都不是主键。(默认情况下,连接由定义为ID的字段完成) 因此,我发现对于CUSTOMER_TYPE表,我可以通过“KeyColumn”定义字段。
如何定义CUSTOMER表中的相关列是CustomerTypeCode而不是CustomerId?(如果我可以的话)

最后,sql查询应该如下所示:

CUSTOMER_INFO_CLASS.cs
----------------------
Id (CUSTOMER table) 
CustomerName (CUSTOMER table)
CustomerTypeDesc (CUSTOMER_TYPE table)
Select Id, CustomerName, CustomerAddress, CustomerTypeDesc
From CUSTOMER t1
  Left join CUSTOMER_TYPE t2
    On t1.CustomerTypeCode = t2.CustomerType

如果Customer表将CustomerType成员映射到CustomerType表的主键,则Hibernate应自动为您执行联接


CustomerType没有被普通外键引用链接有什么原因吗?

CustomerType代码不是CUSTOMER的主键,CustomerType不是CUSTOMER\u类型的主键,问题由此开始。我不知道为什么CustomerType没有通过普通外键链接,数据库是很久以前建立的。它不是一个选项,因为另一个系统使用它…我注意到的另一件事是,当使用join时,fluint执行如下连接:从第一个表定义为ID的join字段=我在第二个表的“KeyColumn”中定义的字段。但我不想使用ID列进行连接,我想要第一个表中的其他列,我如何才能告诉nhibernate。。。