隨著 Entity Framework 最新主版本 EF6 的推出,Microsoft 對象關系映射 (ORM) 工具達到了新的專業高度,與久負盛名的 .NET ORM 工具相比已不再是門外漢。 EF 已經完全成熟,正在超越以前廣泛使用的工具。
自 2012 年 EF5 發布后,這種做法帶來了兩個方面的進步。 首先,從 .NET Framework 中提取所有的 Entity Framework API,并與團隊同時正在開發的非常規功能 API 組合在一起。 其次,整個開發工作改用了開源模型。 EF6 在以下網站中公開開發:entityframework.codeplex.com。 您不僅能通過會議記錄、簽入和可下載夜間生成了解團隊所做的工作,還可以向 EF6 提供源代碼(但是要在 EF 團隊的完全監督之下)。
請記住 EF6 是演變而不是革命。 幾乎您原先掌握的所有 EF 技能都沒有變化,例如如何生成 Entity Framework 模型以及如何在您的應用程序中使用 EF。 盡管 EF6 是在 ORM 基礎上發展而來的,但是并沒有改變它根本的工作方式。 如果您已經投入時間學習 EF,那么這種投入將不會白費。 EF6 在某些方面變化還是比較大的,但是這些變化僅限于部分命名空間的變化,如果您有準備的話會很容易處理。
EF6 的功能分為以下幾類:
- 免費提供的功能:這些功能屬于核心功能的一部分。 您甚至無需知道它們有什么作用,更不必說需要知道有什么新的代碼了。 該組包括的功能有通過重寫視圖生成引擎和查詢編譯修改來提高性能,由于 DbContext 能使用打開的連接而獲得的穩定性,以及 Entity Framework 創建的 SQL Server 數據庫的更改設置。
- 級別設置功能:改進較大之處是 Code First 現在支持映射存儲過程,而在設計器中創建的模型已支持此功能。 第 9 頻道視頻對此功能已進行了頗多介紹(例如位于以下網址的視頻:http://channel9.msdn.com/Events/TechDays/Belgium-2013/70),而且 CodePlex 網站提供了詳細的規范介紹。
- 另外一處更改更為有趣。 正如我剛才提到的,EF6 的 EF API 是從 .NET Framework 中提取的;它們現已完全封裝在 NuGet 程序包中。 這意味著 EF5 采用的部分功能(例如枚舉、空間數據支持和性能改進)不再依賴于 .NET 4.5。 所以,如果您的 EF6 使用的是 .NET 4,那么這些功能最終會給您帶來幫助。
- 我也將 EF 設計器歸入了這一類。 從 2013 版開始,Visual Studio 已取消此功能,但是作為 Visual Studio 的擴展功能提供。 對于 EF6 而言,將設計器作為擴展功能具有相當大的好處。 以后團隊將能夠直接向設計器添加功能,包括 Entity Framework Power Tools 中當前提供的功能。 通過使設計器與 Visual Studio 分離,可以使 Microsoft 為 Visual Studio 2012 和 Visual Studio 2013 提供 EF6 工具。
- 專家功能:這些功能是基本 EF 應用程序示例所不具有的、您渴望擁有的功能。 EF6 中有許多這樣的功能:支持異步查詢和保存、返回自定義 Code First 約定、利用新的 DbConfiguration 類型提高可擴展性(依賴于較低級別的 EF6 IDbDependency 解析程序)、支持單元測試模擬、可配置不穩定連接的重試次數等。 您無需成為認證專家就能使用這些功能,但您在使用時肯定會感覺像專家,具體可以參考文章Entity Framework 6:專家版本。
Nido Framework 是一個基于.NET 4和 Entity Framework 6的框架,它的開源協議是GPL2,項目地址是https://nidoframework.codeplex.com/。作者在開發這個框架之前在codeproject上寫了一篇文章Architecture Guide: ASP.NET MVC Framework + N-tier + Entity Framework and Many More,最近作者又寫了另外一篇介紹文章Introduction to Nido (FREE) Framework .NET/ C#。
文章列表