我正在使用table
立即更新entity framework
中的2600条记录。
它以前工作正常,但是现在突然开始每次都抛出timeout error
。
timeout
属性设置为150。
此外,多个用户同时使用application
。
下面是code
:
foreach (var k in context.Keywords.Where(k => k.CurrentDailyCount > 0))
{
k.CurrentDailyCount = 1;
}
context.SaveChanges();
这是我面临的error
:
此error
背后的问题是什么?工作正常,但突然开始抛出timeout error
。
答案 0 :(得分:0)
var entries = context.Keywords.Where(k => k.CurrentDailyCount > 0) ?? new List<Keyword>();
foreach (var k in entries)
{
k.CurrentDailyCount = 1;
}
await context.SaveChangesAsync();
context.Keywords.Where(k => k.CurrentDailyCount > 0)
?? new List<Keyword>()
。await context.SaveChangesAsync();
答案 1 :(得分:0)
首先,您可以考虑只选择primaryKey字段和CurrentDailyCount。你可以像
context.Keywords.Select(x => new Keyword(){
PrimaryKeyColumn = x.primaryKeyColumn,
CurrentDailyCount = x.currentDailyCount
}).Where(k => k.CurrentDailyCount > 0)
此外,您还应该检查sql语句的执行时间。如果CurrentDailyCount列未建立索引,则您的代码会收到超时错误也就不足为奇了。
超时属性设置为150。
您要解决哪个超时问题?是SQL连接超时还是Kestrel服务器超时?如果将SQL超时期限设置为150,并且kestrel超时值为默认值(即120s),则代码达到120秒时就会中断。