0
我使用EF代碼首先映射到一個現有的DB2數據庫。這是一對多的關係,不幸的是我不能輕鬆創建視圖或更改架構。EF代碼首先國外關鍵問題
父表的模式具有以下鍵:
Type (char(1))
ServiceDate (datetime)
FormNumber (varchar(8))
子表(詳細信息)具有下列鍵
ServiceDate (datetime) (also a foreign key to ServiceDate on the parent table)
FormNumber (varchar(8)) (also a foreign key to ServiceDate on the parent table)
SpecificServiceDate (datetime)
LineNumber (varchar(8))
我想用流利的映射創建關係。如果我做的:
.HasMany(e => e.Details).HasForeignKey(e => new {e.ServiceDate, e.FormNumber});
...我得到一個錯誤說的密鑰不匹配的主鍵。想法如何設置這個?謝謝。
編輯
OK,EF本身並不支持這一點。有沒有一種解決方法來延遲加載數據?
這是隻讀的,如果有差別。
我甚至不知道如何將工作。如果您有FormNumber = 1,ServiceDate = 1/1/2013,Type = A和FormNumber = 1,ServiceDate = 1/1/2013,Type = B,會發生什麼?細節無法唯一地選擇哪個記錄是父項。我不能相信DB/2在它不是唯一標識的時候會允許這種外鍵關係。 – 2012-04-21 19:08:31
這是關閉一箇舊的AS400系統,主表實際上是一個UNION視圖,並且外鍵比其他任何更常規。不好玩。 :-( – bryanjonker 2012-04-21 19:10:29
EF並不支持視圖,尤其是EF會將任何不可空的字段視爲複合主鍵的一部分,您可能無法在此處創建關係。 – 2012-04-21 19:19:15