将LINQ to SQL的log信息发送到debug输出窗口

发表于:2008-05-07来源:作者:点击数: 标签:sqlSQLSqldebuglog
当你在项目中使用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信息直接发送到Debug的输出窗口, 那该多方便啊. Kris Vandermotten 已经创建好了一个这个工具类, 你只要使用这样的语法:
MyDataContext db = new MyDataContext(); db.Log = new DebuggerWriter();
  就可以在启动Debug调试的时候将Log信息发送到Debug的output窗口了, 非常方便, 强力推荐你使用.

原文转自:http://www.ltesting.net