EF6 Entity framework 有时在 SQL 服务器上查询缓慢

EF6 Entity framework sometimes slow query on SQL Server

我们在 .NET Core 中开始了一个新项目。我们刚刚开始,我们正在访问 Web API 端点以获取 8 条记录的一些参考数据。

我们在 Angular 屏幕中注意到,EF 查询周期性地(大约每 10 个请求)屏幕需要大约 6 到 15 秒才能到达 运行,而不是通常需要的 30 毫秒.

在调试时我们知道我们正在到达 .ToListAsync() 然后在 SQL 探查器中我们可以看到它启动查询并且需要延迟时间。

所以第一印象是 SQL 问题,但如果我们 运行 在 SQL 中手动查询 SQL 本身,它永远不会延迟。

有什么想法吗?

这可能与 efcore 的连接池设置有关,它不应该在每次请求 db 时请求一个新连接,通过在你的依赖管理中添加这个来启用连接池:

builder.Services.AddPooledDbContextFactory<DbContext>(
o => o.UseSqlServer(builder.Configuration.GetConnectionString("AppContext")));

参考:- https://docs.microsoft.com/en-us/ef/core/performance/advanced-performance-topics?tabs=with-di%2Cwith-constant