使用EntityFramework在解决方案中显示T-SQL



当我在实体框架中使用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>,因此您可以将字符串作为参数的任何方法传递。

相关内容

  • 没有找到相关文章

最新更新