当我在实体框架中使用linq并想查看我的t-sql查询时,我使用了sql profiler,但是在解决方案中有什么办法可以看到t-sql吗?
答案 0 :(得分:0)
更新:我刚刚注意到这个问题与EF Core有关,所以我不确定该方法是否有效。我会留下答案以防万一。
更新2:显然,以下所述的简单Log
方法在EF Core中不再那么简单了。我找到此博客条目:
https://blogs.msdn.microsoft.com/dbrowne/2017/09/22/simple-logging-for-ef-core/
,以及上面的@Jonesopolis评论。
如果您只想查看由Entity Framework查询生成的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>
,因此您可以传递任何将字符串作为参数的方法。