Entity Framework Core 抛出超时已过期。操作完成前超时时间已过或服务器没有响应

问题描述 投票:0回答:1

我正在使用 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 查询。请问我在这里做错了什么?

谢谢。

c# entity-framework-core timeoutexception
1个回答
0
投票

您可以在设置 DbContext 时设置更长的超时:

        services.AddDbContext<MyDbContext>(config =>
          config.UseSqlServer(
             "MyConnectionString",
             providerOptions =>
             {
                 providerOptions.CommandTimeout(180); <-- Timeout in seconds
             })
        );
© www.soinside.com 2019 - 2024. All rights reserved.