如何解釋ADO.NET解決方案說明
學習ADO.NET解決方案的問題,提供完整的解決方案,他們將不會給開發者帶來任何東西。開發人員不得不在Entity Framework之上建立自己的ORM,如果他們確實要在上下文外部操作數據的話。
本文的余下部分是相當冗長的示例,它關于如何使用新API來執行更改跟蹤。這包括創建接口(例如IEntityWithChanges)、像 GetEntityState那樣使用手寫的方法進行映射、或者在一個方法中兩者都使用,該方法接收上下文對象、實體狀態名稱、實體圖的方法與實體狀態映 射等。記住,這只適用于保存更改,你仍要先以某種方式跟蹤該更改。
ADO.NET解決方案了它是如何完成的:
下面是用NHibernate的處理方法:
session.Merge( entityFromPresentationLayer );
Frans' LLBLGen支持類似的功能。換句話說,這是數據訪問框架做的事,而非開發人員。
談到Frans Bouma,下面是他總結的一些情況,#t#
所有那些使用數據集的開發者,如何確信EF是正確方式呢?數據集在什么時候解決過這個問題的呢,從一開始嗎?更別提是不是那些大 量競爭性的O/R映射器框架?我想核心的問題是設計框架的錯誤,從框架開發人員的角度來看:ADO.NET解決方案在你編寫框架時,有兩種“正確點”——來自框架開發者的觀點 (Point Of View,POV)和來自框架用戶的觀點。核心的錯誤是假設這兩種“正確點”實際上是一樣的,更糟糕的是:假設框架開發者關于“正確點”的觀念,即是框架 用戶所想。
在之前的例子中,所有放在對象創建中的查詢結果都被添加到ADO.NET解決方案r中,因此我們能夠跟蹤它們的更新。如果沒有必要跟蹤對象的更新和刪除,那么最好是使用NoTracking合并項。例如,在一個ASP.NET Web應用程序中,如果它要查詢一個指定的分類名稱,但卻不需要對返回的數據進行更新,那么NoTracking就會是一個不錯的選擇。在這種情形下,使用NoTracking的查詢會在性能方面得到改善。