1
我有我想要映射到會看起來像一個類中的兩個表:功能NHibernate - 地圖2表一類
CUSTOMER_INFO_CLASS.cs
----------------------
Id (CUSTOMER table)
CustomerName (CUSTOMER table)
CustomerTypeDesc (CUSTOMER_TYPE table)
我試圖做它的加入,如下:
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查詢應該是這樣的:
Select Id, CustomerName, CustomerAddress, CustomerTypeDesc
From CUSTOMER t1
Left join CUSTOMER_TYPE t2
On t1.CustomerTypeCode = t2.CustomerType
CustomerTypeCode不是CUSTOMER的主鍵,而CustomerType不是CUSTOMER_TYPE的主鍵,由此我們的問題就開始了。 我不知道爲什麼CustomerType沒有被正常的外鍵鏈接,數據庫是在一段時間之前建立的。它不是一個選項改變它,因爲另一個系統使用它... – Olga 2010-01-06 12:08:03
我注意到的另一件事是,當使用連接,fluint做這樣的連接:JOIN領域,定義爲從第一個表中的ID =字段,我定義第二張表中的「KeyColumn」。但我不想使用ID列加入,我想從第一個表的其他列,我怎麼能告訴它nhibernate ... – Olga 2010-01-06 12:16:02