我有一個網站。本網站位於特定的時區,並具有指定類型的Internet連接。這兩個屬性都作爲外鍵存儲在數據庫的Site表中,以記錄到單獨的查找表中。我永遠不會這樣做,但我明白爲什麼(強制使用一組通用名稱,給出稍小的數據庫大小,在某些情況下允許標準化的附加信息,並且允許輕鬆檢索值列表以用作DDL)。另一個流利的NH加入問題
我正在構建一個映射,必須包含這些信息的檢索。我想避免必須爲一個字段構建一個域對象和映射(在某些情況下,除了查找表的ID以外),所以我想要使關係非規範化,只需要對象上的字符串值。簡單的目標。
問題是,我試圖使用的連接假定Site表的主鍵在查找表的某處引用;實際上,我們假設網站位於關係的「一方」,這是不準確的。以下是相關的映射線:
Id(x=>x.Id).Column("SiteID");
...
Join("lu_TimeZone", j =>
{
j.KeyColumn("TimeZoneID");
j.Map(x => x.TimeZone).Column("TimeZone");
});
生成的SQL包括聯接:
FROM Site this_0_
inner join lu_TimeZone this_0_1_
on this_0_.SiteID=this_0_1_.TimeZoneID
*蜂鳴器*對不起,這是不正確,感謝玩。在加入應該是:
FROM Site this_0_
inner join lu_TimeZone this_0_1_
on this_0_.TimeZoneID=this_0_1_.TimeZoneID
但是似乎有沒有辦法告訴流利使用KeyColumn作爲列名上的連接兩側。由於從站點到其他查找表有多個連接,反轉映射以將TimeZone加入站點是不可行的。