將LINQ to SQL的log信息發送到debug輸出窗口
當你在項目中使用LINQ to SQL的時候, 有一個事情是必須要非常注意的, 那就是要關心一下LINQ to SQL幫你生成的SQL語句, 尤其在你還不是非常熟悉LINQ to SQL的語法, API以及一些Tricks的時候, 這點是非常重要的, 否則一個低效的應用程序可能就要在你手下誕生了.
當你在項目中使用LINQ to SQL的時候, 有一個事情是必須要非常注意的, 那就是要關心一下LINQ to SQL幫你生成的SQL語句, 尤其在你還不是非常熟悉LINQ to SQL的語法, API以及一些Tricks的時候, 這點是非常重要的, 否則一個低效的應用程序可能就要在你手下誕生了.
有幾種辦法可以跟蹤這些SQL語句:
1. DataContext本身有提供Log屬性來將LINQ to SQL生成的SQL語句格式化并輸出到控制臺窗口, 通常是這樣:
DataContextInstance.Log = Console.Out;
這個用法對于控制臺, Winform應用程序沒有問題, 但對于ASP.NET這類的非控制臺應用程序不起作用
2. 使用SQL Profiler來偵測SQL語句, 這個做法通用于任何的應用程序, 實際上也是一個必須要了解的跟蹤手段, 當
性能真正出現問題是, 這可是個不可少的利器之一.
3. SQL Profiler雖然好用, 但是對于
開發階段你可能不會想去了解那么多的細節, 例如SQL語句的執行情況, CPU耗費時間等等, 尤其是剛開始學習LINQ to SQL的時候, 由于對語法的不熟悉, 可能更多的時候是關心如何用LINQ to SQL的API構造出你想要的SQL語句, 例如到底API映射成了inner join還是left join, 到底執行了多少次的
sql, 當你關心這個的時候, 如果要是能將Log信息直接發送到De
bug的輸出窗口, 那該多方便啊. Kris Vandermotten 已經創建好了一個這個工具類, 你只要使用這樣的語法:
MyDataContext db = new MyDataContext();
db.Log = new DebuggerWriter();
就可以在啟動Debug調試的時候將Log信息發送到Debug的output窗口了, 非常方便, 強力推薦你使用.
原文轉自:http://www.anti-gravitydesign.com