具有Entity Framework 4.0的複合數據庫密鑰

composite-key entity-framework primary-key

我們公司對大型數據庫的重新設計大量使用了數據庫上的複合主鍵。

忘記性能影響,這會在Entity Framework 4.0中使用此db時遇到任何困難嗎?數據庫結構不太可能改變,我不是在尋找“哲學”辯論,但實際影響是什麼?

傑里米·米勒Jeremy Miller)表示 ,“複合鍵可以使任何類型的對象/關係映射和持久性變得更加困難。”但他並沒有真正說出原因。這與Entity Framework 4.0如何處理密鑰有關嗎?

一般承認的答案

不,EF4支持複合鍵就好了。

問題是帶有代理鍵和復合鍵的表。您只能在每個型號上設置一個鍵;該鍵可以有多個字段,但從設計者的角度來看,您只能擁有一個字段。不確定手動編輯xml或僅代碼映射。

如果需要在同一個表上使用複合和代理鍵,則可以將字段設置為標識而不是鍵。 ObjectContext或ObjectStateTracker不會使用Identity(Id)字段,但會增加並且可以查詢。


熱門答案

我遇到了EF4和復合鍵的問題。它不支持將列用作連接表中多個鍵的組件。

有關更多詳細信息,請參閱我之前的問題在Entity Framework中的多對多關係中映射複合外鍵 。它的核心是當你有一個連接表(描述許多關係),其中兩個關係使用一個公共密鑰時,你會得到一個像

錯誤3021:映射片段中的問題...:表PageView中的以下每個列都映射到多個概念側屬性:PageView.Version映射到(PageView_Association.View.Version,PageView_Association.Page.Version)

解決這個問題的唯一方法是複制該列,這樣就完全違背了它的目的。

祝好運!



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因