C# 根据SQL Server数据库检查LINQ查询
有没有办法在.NET中查看我们对数据库进行的LINQ查询?例如,我正在LINQ中编写一个查询,我想看看SQL查询触发了什么来与数据库通信C# 根据SQL Server数据库检查LINQ查询,c#,asp.net,sql-server,linq,entity-framework,C#,Asp.net,Sql Server,Linq,Entity Framework,有没有办法在.NET中查看我们对数据库进行的LINQ查询?例如,我正在LINQ中编写一个查询,我想看看SQL查询触发了什么来与数据库通信 是否有任何Visual Studio窗口或其他方式?如果您有一个DbContext,您可以在其上启动LINQ查询,只需将DbContext.Database.Log属性设置为类似以下内容: yourContext.Database.Log = (msg => System.Diagnostics.Debug.Write(msg, "SQL")); 在此
是否有任何Visual Studio窗口或其他方式?如果您有一个DbContext,您可以在其上启动LINQ查询,只需将DbContext.Database.Log属性设置为类似以下内容:
yourContext.Database.Log = (msg => System.Diagnostics.Debug.Write(msg, "SQL"));
在此之后,每个SQL查询都会显示在Visual Studio的调试控制台中,并带有SQL类别。您可以使用SQL探查器查看LINQ表达式如何转换为SQL语句。您是否正在寻找类似 然后,无论何时执行查询,您都会看到如下输出:
var customers = context.Customers.ToList();
2015年3月30日13:48:03+02:00打开的连接
挑选
[Extent1].[Guid]作为[Guid],
[Extent1]。[FirstName]作为[FirstName],
[Extent1].[LastName]作为[LastName],
[Extent1].[Email]作为[Email],
[Extent1].[Created]为[Created]
来自[dbo].[Customer]作为[Extent1]
-于2015年3月30日13:48:03+02:00执行
-在0毫秒内完成,结果为:SqlDataReader
2015年3月30日13:48:03+02:00时的闭合连接
您还可以使用SQL Server事件探查器、跟踪或扩展事件。前两个已弃用 您可以使用DataContext对象的属性。此外,它还取决于您使用的应用程序的类型 对于Web应用程序:-
db.Log = Response.Output;
db.Log = Console.Out;
对于控制台应用程序:-
db.Log = Response.Output;
db.Log = Console.Out;
除此之外,还可以使用DataContext类的方法。Sql Server Profiler也是一个明显的选项。您使用哪种RDBMS?如果您使用的是MSSQL,请使用Sql Profiler。我正在使用SQL RDBMSSQL RDBMS?这是Microsoft、Oracle、MySQL、Postgre还是…?MSSQL,这是Microsoft,无论使用哪种类型的数据库,这都有效。我必须在哪里写这行代码,特别是在某个类中,或者在每个要检查的类中?@Parveen您需要将它附加到您实例化的每个上下文中。将记录该上下文执行的所有查询。我在答案中添加了上下文声明行。希望获得此帮助以及需要在控制台或输出窗口中检查输出的位置?@Parveen是的,结果将写入输出窗口,从“显示输出自”列表中选择“调试”。无论使用哪种类型的数据库,此操作都有效。问题是,还是其他方式。所以这个答案是合理的。你好,唐纳。。。