我正在使用 EF Core 使用以下 LINQ 查询并收到以下错误:
超时已过。超时时间在完成之前已过 操作或服务器没有响应。
不确定我在这里做错了什么。
ECUserId
是一个 varchar
列,并且该表上没有为此列设置索引。
还检查了排序规则,并将其设置为“SQL_Latin1_General_CP1_CI_AS”,区分大小写。
string ECUserId = "TN504060"
var userStandby = await _context.UserStandby
.Where(standBy => ECUserId.Equals(standBy.ECUserId,
StringComparison.OrdinalIgnoreCase))
.FirstOrDefaultAsync();
userStandby
表有大约126580条记录。
任何人都可以帮我解决上述超时错误吗?
在此列上创建索引,但仍然遇到相同的超时错误:
GO
CREATE NONCLUSTERED INDEX [IX_UserStandby_ECUserId]
ON [dbo].[UserStandby]([ECUserId] ASC);
LINQ 查询不会生成具有
where
条件的 SQL 查询。请问我在这里做错了什么?
谢谢。
您可以在设置 DbContext 时设置更长的超时:
services.AddDbContext<MyDbContext>(config =>
config.UseSqlServer(
"MyConnectionString",
providerOptions =>
{
providerOptions.CommandTimeout(180); <-- Timeout in seconds
})
);