1. 程式人生 > >Entity Framework性能影響因素分析

Entity Framework性能影響因素分析

打折 模型 dbcontext 遍歷 但是 png net 實體 entity

1、對象管理機制-復雜
為更好的管理模型對象,EF提供了一套內部管理機制和跟蹤對象的狀態,保存對象一致性,使用方便,但是性能有所降低。

2、執行機制-高度封裝
在EF中,所有的查詢表達式都會經過語法分析、解析SQL語句、然後調用底層的ADO.NET對象去執行,中間的這些環節導致性能有所降低。

3、SQL語句-低效
EF采用映射機制將對象操作轉換成SQL語句,SQL語句一般的基於標準模塊生成的,不會進行特殊優化,和直接編寫SQL語句操作數據庫相比,效率會打折扣,復雜操作更為明顯。


狀態管理機制優化
技術分享圖片
AsNoTracing()方法
1、添加AsNoTracing()方法後,對象將不被狀態管理,查詢性能提高

2、返回的實體將不再DbContext中緩存
3、適合場景:純粹查詢

禁用自動跟蹤變化
技術分享圖片
分析
1、關閉前,當執行Add()操作時將會耗費大量的性能,會導致DbContext遍歷所有緩存的Entry,比較原始值和當前值,而這個操作會非常耗費性能
2、關閉後,使用Add()方法告知DbContext中對象的變化即可,如果是刪除使用Remove()方法,如果是修改則還需要通過State屬性顯示告知變化
3、適合場景:大批量操作數據(添加、刪除、修改)

Entity Framework性能影響因素分析