EntityFramework 如何查看執行的 SQL 代碼?


在 VS 調試的時候,如果我們項目中使用的是 EntityFramework,查看 SQL 執行代碼就不像 ADO.NET 那樣直觀了,我們需要設置下,可以參考下:

  1. How can I log the generated SQL from DbContext.SaveChanges() in my Program?
  2. 如何:顯示生成的 SQL

按照 MSDN 的設置,發現 DbContext 並沒有 Log 屬性,應該是 EntityFramework 版本問題,stackoverflow 中的“context.Database.Log = Console.WriteLine;”,是我們想要的答案,但是只能用於控制台應用程序,我們調試項目輸出應該使用:Debug.WriteLine,但是這樣又會抱如下錯誤:

異常信息:無法用“System.Diagnostics.Debug.WriteLine(string)”創建委托,因為它具有 Conditional 特性。

正確代碼

根據 Log 屬性的類型 Action ,我們將代碼修改下就可以:

Context.Database.Log = new Action<string>(q => Debug.WriteLine(q));

這樣調試項目的時候,我們就可以在“輸出窗口”,看到 EntityFramework 生成並執行的 SQL 代碼了。


免責聲明!

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



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