2011-05-13 204 views
1

我聽說POCO有實體框架存在缺點,但我不是100%確定它們是什麼。我聽說有跟蹤變更的問題。主要缺點是什麼?解決方法是什麼?我正在考慮在即將開展的項目中使用POCO實體並希望做好充分準備。實體框架+ POCO垮臺?

謝謝!

回答

4

垮臺取決於您要編寫的應用程序的類型。 POCO從架構的角度來看非常棒,因爲它們不會引入對Entity框架的依賴。與更改跟蹤的問題可以分爲兩個獨立的模塊:

  • 分離的實體
  • 性能

分離的實體不僅波蘇斯的問題。這是EF中的全局問題,也許是整個ORM概念(但其他API可能有更好的工具來處理這個問題)。關鍵是ORM負責堅持對實體進行更改。爲此,它提供了一些更改跟蹤機制,但這些更改跟蹤機制僅在ORM知道實體時才起作用。一旦你分離一個實體(在EF調用Detach的情況下,或者處理ObjectContext或創建實體而不從數據庫加載它 - 在Web應用程序和Web服務中很常見),EF不知道有關更改,一旦你想保存實體,你必須告訴EF發生了什麼變化。這是easy to do in case of single entity,但是在整個對象圖的情況下它是pretty big challenge。這可以部分通過STEs解決,但I don't think that STEs are good solution解決問題 - 它們僅在某些情況下有用。

性能問題也與更改跟蹤有關。有幾份報告顯示,如果EF想要跟蹤實體的變化,需要很長時間來初始化變更追蹤(當entity is loaded from database或當它是attached to the context時)。只有計劃使用大型數據集才能解決此問題。

仍然有很多使用POCO的成功項目,大多數項目可能從未遇到過這些問題。