在Entity Framework宣布開源後不久Entity Framework(EF) 5就正式發布了,ADO.NET官方部落格上EF5 Released列出了EF5的新特性:
- 枚舉類型支援
- 效能增強,特別是.NET 4.5中
- 自動使用localDb及SQLServerExpress
- Spatial types
- Table Valued Functions
- 帶有多個結果集的預存程序
相容性方面支援Visual Studio 2010 和 Visual Studio 2012 上的 .NET 4.0 和4.5應用項目。
微軟已經發布了一份白皮書,概述使用Entity Framework 5(它作為.NET 4.5的一部分發布)時應關注的各種效能注意事項。
以下是一些需要注意的地方:
- 冷查詢執行vs.暖查詢執行(Cold-vs-Warm query execution)——檢視窗產生這一步(用於從資料庫模式到概念模式或從概念模式到資料模式的必要轉換)會增加第一次執行查詢時的開銷,後續運行會因為視圖緩衝的緣故會更快一些。使用者可以通過預產生視圖來提升效能;
- 緩衝——在對象層次(特別是結合禁用AutoDetectChanges改善DbContext Find()效能),可用的緩衝有查詢計劃緩衝(Query Plan Caching)、中繼資料快取(MetaData Caching)及結果緩衝(Results Caching)。EF仍然沒有提供二級緩衝,不過我們可以參考一些指南進行實現——如CodePlex上的樣本,以及Julia Lerman的文章“Entity Framework與Windows Azure中的二級緩衝”;
- 可選的無跟蹤查詢(沒有狀態跟蹤的開銷)。目前該選項只對ObjectQuery可用,沒法適用於DbSet及DbQuery類;
- 微型ORM風格的快速查詢,如資料庫上執行SQL查詢以及ExecuteStoreQuery ;
- 設計時注意事項——每個層次對應一張表(Table-per-hierarchy,簡稱TPH)vs. 每個類型對應一張表(Table-per-Type,簡稱TPT)vs. 每個類對應一張表(Table-per-Class,簡稱TPC);其中TPT在查詢複雜度及效能方面表現最差;
- 消極式載入vs.積極式載入 (Lazy-vs-Eager loading)。
Entity Framework是由微軟提供的一款面向.NET應用程式的商業對象關係映射架構。除了EF之外,.NET開發人員還可以選擇的一些(開源和商業包括在內)產品有NHibernate 和LightSpeed。另外,還有一些輕量級的微型ORM模型像Dapper.NET、PetaPoco 及Massive。