Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to SQL:如何将最终查询保存到日志文件?_Linq_Entity Framework_Linq To Sql_Logging - Fatal编程技术网

Linq to SQL:如何将最终查询保存到日志文件?

Linq to SQL:如何将最终查询保存到日志文件?,linq,entity-framework,linq-to-sql,logging,Linq,Entity Framework,Linq To Sql,Logging,我正在关注一个具有大量LINQ到SQL查询的应用程序。这基本上就是带有MVC的SilverLight应用程序。一些数据加载需要相当长的时间。我想知道在SQL server上触发的确切查询。有没有办法将生成的T-SQL语句存储到某种日志文件中 还请建议一些其他可能的方法。LINQ to SQL DataContext具有一个属性,该属性包含对TextWriter的引用,所有生成的SQL查询的文本都将写入该属性。例如,您可以为磁盘文件打开StreamWriter,然后将其分配给datacontext

我正在关注一个具有大量LINQ到SQL查询的应用程序。这基本上就是带有MVC的SilverLight应用程序。一些数据加载需要相当长的时间。我想知道在SQL server上触发的确切查询。有没有办法将生成的T-SQL语句存储到某种日志文件中


还请建议一些其他可能的方法。

LINQ to SQL DataContext具有一个属性,该属性包含对
TextWriter的引用,所有生成的SQL查询的文本都将写入该属性。例如,您可以为磁盘文件打开
StreamWriter
,然后将其分配给datacontext的Log属性。请参见此处以获取一些好的示例:

您最好的选择是使用SQL Server探查器。这将把所有查询记录到一个跟踪文件中,您可以在跟踪后加载该文件,以查看查询所用的时间等

看看这个介绍。

确保选择了正确的事件,例如语句已完成

更多参考请参见本帖


+1尽管OP需要一个日志,但SQL Server profiler确实也是一个很好的解决方案,而且不涉及编码,这是事实。我现在正在探索SQL Server探查器。谢谢。通过编码,我可以非常具体地记录特定的查询。对于SQL Server事件探查器,它处理事件并记录所有内容。也许我必须学习过滤等方面的知识@Kangkan-我通常使用sql server profiler和调试器。我把一个breakboint放在我想要跟踪的东西之前,打开配置文件,跨过我想要跟踪的部分,然后再次切换。因为我使用的是sql server express,所以我使用的是AnjLab探查器,而不是MSSorry提供的探查器,所以我对LINQ很幼稚,无法找到log属性。我们使用MVC,但我看不到log属性。“log”是DataContext类的属性。请看这里: