2013-02-15 135 views
0

我得到嘗試使用實體框架4.0運行解決方案時,下面的錯誤,我想知道如何更改映射設置,以解決它:在映射片段實體框架4.0映射問題

問題開始在線路588:所述的EntitySet UserDatas

的必須爲所有關鍵屬性指定映射(UserDatas.Id)爲了給出一些背景 - I最初創建/與修改/創建日期下面所示的表由Id列中的每一個,但隨後決定將它們抽象爲抽象UserData,然後使用繼承。因爲我改變了這一切,都已經去了鍋!

有沒有人有任何指向我要去哪裏錯了?我一直在使用下面的設計視圖展示(GUI),感覺就像我碰到了一堵磚牆。

我的db.edmx設計視圖看起來像這樣,點擊錯誤將我帶到下面顯示的Variables表中,但是對於繼承此Id的所有其他表重複該錯誤(請忽略所有到其他的鏈接表 - 我沒有要發佈整個大分貝示意圖):

enter image description here

非常感謝。

回答

1

聽起來就像你在這裏誤用了OO繼承。只是因爲對象共享具有相同屬性名稱的項目並不意味着它們從基礎繼承。例如,問你自己在你的模塊中,如果標籤是用戶數據?我懷疑你可以更好地描述這個標籤HAS UserData指出遏制而不是繼承。我建議設置一個通用的IUserData接口,其中每個對象都明確地實現接口。在這種情況下,您的映射會將UserData接口的屬性移回到底層類中(因爲它們最初是配置的)。儘管您可能能夠使您的映射與繼承模型一起工作,但從LINQ和TSQL的角度來看,您的查詢將變得非常複雜。

+0

感謝您的回覆吉姆 - 很好的建議。我決定放棄這個想法,並尋找一種替代方案,如果沒有正確的推理就不會強迫繼承。再次感謝,威爾 – WheretheresaWill 2013-02-18 09:31:20