2012-06-19 66 views
6

關於使用實體框架時外鍵與獨立關係的概念,我已閱讀several文章和questions。 而我仍然不是100%肯定要走哪條路...... 我不希望通過擁有將用於FK關係的屬性來「污染」我的域POCO,因爲我已經擁有屬性引用「has一個「對象。外鍵與獨立關係 - 實體框架5有改進嗎?

我的問題是(看你@EFTeam,@Ladislav Mrnka)

  1. 是否有關於這個問題在即將到來的實體 框架V5任何改進?
  2. 如果我使用FK而不是獨立關聯(特別是在代碼優先的情況下)有更多優點嗎?

回答

5

如果你有一個大型模型,無論如何你必然會「污染」你的領域對象(或概念模型)。對於具有FK映射關聯的模型,「視圖生成」的成本 - 執行查詢或保存更改所需的EF處理管道中的一個階段,可以移至構建時間(「預生成視圖」)的階段是與具有獨立協會的模型相比較低。這很重要,因爲執行它的時間量對於小型模型可能並不明顯,但它會變得非常快,尤其是當存在關聯映射到可空的外鍵(0到1或帶有派生實體的1到1在TPH映射分層結構中)。在官方EF5 performance considerations document中,給出了一個非常大型模型的視圖生成時間差異的示例,其中「超過一個月,然後我們放棄了」(具有獨立關聯)和104分鐘(使用FK映射的關聯)。在我的情況下(數百高度連接的實體),它在25分鐘到40秒之間。 EF5的情況與之前的版本相同。

+0

我也有一個非常大的模型(超過75個實體)。看起來建議使用FK關係呢? – zam6ak

+0

如果你還沒有看到性能問題(特別是,首先''.SaveChanges'長時間等待,並且第一次查詢訪問給定實體集時略有延遲),如果你喜歡更乾淨的獨立於代碼的關聯,則不需要使用FK給更多。 – cynic

2

沒有任何改進。這兩個選項仍然存在。使用FK關聯的優點是在處理斷開的對象圖時簡化了一對多關係中的更改處理。如果你使用它,它也應該簡化數據綁定。

+1

看起來FK關係以域POCO的「污染」爲代價提供了更多優勢......您能否詳細說明「如果您使用它,它也應該簡化數據綁定」。你是什​​麼意思 - 是否有一個例子(我是一個「視覺」人)?謝謝 – zam6ak