将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.ltesting.net