文章出處

在 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 代碼了。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()