在普通的实体框架中,很容易实现生成的 sql 查询的视图:
using (var context = new SomeContext())
{
context.Database.Initialize(false);
context.Database.Log = Console.WriteLine;
//...
}
结果,sql 将输出到控制台,您可以评估结果查询。第一行需要排除上下文初始化代码。
如何登录 Entity Framework Core?
在普通的实体框架中,很容易实现生成的 sql 查询的视图:
using (var context = new SomeContext())
{
context.Database.Initialize(false);
context.Database.Log = Console.WriteLine;
//...
}
结果,sql 将输出到控制台,您可以评估结果查询。第一行需要排除上下文初始化代码。
如何登录 Entity Framework Core?
我将描述最简单的方法。
安装包:
在上下文类中,添加记录器工厂并注册它。
一切,之后您可以在控制台中看到生成的请求。
LogLevel.Information
删除大部分通常不需要的消息。设置您需要的级别。我刚刚开始使用 EF Core,但我立即遇到了许多生成请求的代码示例,这些请求最终在客户端而不是服务器上执行。
一般来说,EF Core 以损害开发人员而闻名:如果它不能在 DBMS 服务器上做某事,它会从数据库中提取所有数据并继续在客户端上进行处理。在这种情况下,常规 EF 会抛出异常。EF Core 3.0将执行相同的行为。
例如,这是一个查询:
产生以下消息的输出:
在这里您可以看到两个警告“无法翻译,将在本地进行评估”——这很糟糕。请求需要重写。
最后,我们看到了 sql 查询本身。很明显,整个表都被卸载了。
对于 Microsoft.EntityFrameworkCore,版本 = 5
仅输出到控制台的 sql 请求(需要使用 Microsoft.EntityFrameworkCore.Diagnostics;)
还有更多选择: