当我在实体框架中使用linq并想查看我的T-SQL查询时,我使用了SQL Profiler,但是有什么方法可以在我的解决方案中查看T-SQL?
更新:我只是注意到这个问题是关于EF核心的,因此我不确定此方法是否有效。我会留下答案以防万一。
更新2:显然,下面描述的简单Log
方法不再那么简单。我找到了这个博客条目:
https://blogs.msdn.microsoft.com/dbrowne/2017/09/22/simple-logging-for-ef-core/
与上面的@Jonesopolis评论一起。
如果您只想查看由实体框架查询生成的T-SQL,则可以使用数据上下文的Log
属性并指定调用方法。
例如:
using (var ctx = new MyDataContext())
{
ctx.Database.Log = Console.WriteLine;
var results = ctx.SomeTable.Where(<some predicate here>);
foreach (var row in results)
{
//Do something with row here
}
}
在此示例中,我将其设置为登录时调用Console.WriteLine
。SQL查询将使用WriteLine
方法在控制台中显示。
Log
属性是类型Action<string>
,因此您可以将字符串作为参数的任何方法传递。