locked
FAQs: 如何追踪LINQ To SQL 生成的SQL RRS feed

  • 问题

  • 为了帮助大家更好地学习 LINQ to SQL 技术,微软论坛技术支持团队编辑了一些列的 LINQ to SQL 常见问题及解答" 精华帖。

    本帖的主题是:如何追踪LINQ To SQL 生成的SQL

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "LINQ to SQL 常见问题及解答",请打开索引页面:

    http://social.msdn.microsoft.com/Forums/zh-CN/adonetzhchs/thread/f968dfe5-f9e3-4ed0-9c7f-cf26837ea828


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年5月3日 8:47

答案

  • 通常有三种常用的方法用来追踪由LINQ To SQL 提供器生成的SQL命令:用DataContext.log,用DataContext.GetCommand,和用LINQ To SQL调试平台。

    1)       DataContext.log

    这句代码可以使生成的SQL显示在控制台窗口。这个SQL 可以是查询,插入,更新和删除命令。

    =======================================================

    db.Log = Console.Out;

    =======================================================

    附加参考:

    http://msdn.microsoft.com/en-us/library/bb386961.aspx

    2)       DataContext.GetCommand

    这个方法提供了有关LINQ To SQL 生成的SQL命令的相关信息,但是它仅仅是获取方法而不影响DataContext的状态。请注意以下事项(引自MSDN文档):

    ·         参数必须非空,否则会抛出一个空参数异常。

    ·         正常的LINQ查询转换为SQL查询执行抛出异常的申请不能被转换。

    ·         只有以一个查询命令返回。特别是额外的命令,这是渴望加载命令,不包括在内。

    ·         DataContext不跟踪用户处理的命令,例如从返回的命令执行的结果不会被追踪,从而不影响DataContext的状态。

    下面的示例显示SQL命令生成的控制台窗口中的LINQ To SQL查询。

    ======================================================

    MyDataContextdb = new MyDataContext();

    var query = from d in db.Departments select d;

    DbCommand dc = db.GetCommand(q);

    Console.WriteLine(dc.CommandText);

    =======================================================

     附加参考:

    http://msdn.microsoft.com/en-us/library/bb882652.aspx

     

    3)       LINQ To SQL 调试平台

    LINQ To SQL 调试平台通过看见在Visual Studio调试平台生成的SQL可以帮助我们调试LINQ to SQL IQueryable<>查询语句。我们也可以在平台上执行生成的SQL语句来检查返回值。

    要安装LINQ  to SQL调试平台,请按照以下步骤:

    a)       下载LINQ to SQL Visualizer.zip压缩包在这儿

    b)      关闭正在与性的各种版本的visual studio 2008

    c)       .zip压缩包的\bin\debug\路径复制SqlServerQueryVisualizer.dll程序集到本地路径\Program Files\Microsoft Visual Studio9.0\Common7\Packages\Debugger\Visualizers\

    d)      再次启动Visual Studio2008。现在我们就可以用LINQ to SQL调试平台了。

    附加参考:

    http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx

    http://weblogs.asp.net/bilalshouman/archive/2009/02/17/linq-to-sql-debug-visualizer.aspx


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年5月3日 8:49