使用Entity Framework 5的性能注意事項

雖然Entity Framework(EF) 5承諾帶來了超越EF 4的大幅性能提升,但爲了更有效地使用ORM,我們仍然需要關注一些注意事項——即視圖生成、緩存、自動編譯的查詢、查詢執行選項及設計時(Design Time)。

微軟已經發布了一份白皮書,概述使用待發布的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.NETPetaPoco 及Massive

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章