MiniProfiler 兼容 Entity Framework 6


一直以來都是在用MiniProfiler配合ASP.NET MVC做請求的監控。

在某項目升級Entity Framework 6之后,在執行查詢時報錯誤:


--------------無法將類型為“StackExchange.Profiling.Data.EFProfiledDbConnection”的對象強制轉換為類型“System.Data.SqlClient.SqlConnection”。----------

 

顯然是新版本的EntityFramework中增加了EntityFramework.SqlServer所以導致此錯誤的發生。

暫時MiniProfiler還沒有發布新的版本,所以以上問題可以使用以下方法解決

1.下載MiniProfiler的對EF6支持的EFProfiledSqlClientDbProviderServices

下載地址:https://github.com/SamSaffron/MiniProfiler

2.下載后用NuGet將項目的EntityFramework升級至6.0版本,編譯后將StackExchange.Profiling.EntityFramework6生成的DLL加入ASP.NET MVC網站的引用

3.原MiniProfiler初始化的代碼為

MiniProfilerEF.Initialize();

可修改為

            MiniProfilerEF.Initialize();
            System.Data.Entity.DbConfiguration.Loaded +=
                (sender, e) =>
                e.ReplaceService<System.Data.Entity.Core.Common.DbProviderServices>(
                    (services, o) => EFProfiledSqlClientDbProviderServices.Instance
                    );

這時再運行程序,EF6的SQL就可以被MiniProfiler監控到,並且不會報錯了。

 

 

引用:

http://www.davepaquette.com/archive/2013/09/01/running-miniprofiler-ef-with-entity-framework-6-rc1.aspx

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM