【发布时间】:2022-01-03 15:41:12
【问题描述】:
背景
几周前,我已将我的项目从 .net core 2.2 迁移到 .net core 6。在过去的几周里,我发现 Entity Framework 呼叫在过去运作良好。
问题
以下代码曾经在 .net core 2.2 上运行良好:
using (var context = new MyContext())
{
return await context.Accounts
.AsNoTracking()
.Where(account => SOME_CONDITIONS)
.ToArrayAsync()
.ConfigureAwait(false);
}
我们发现现在这段代码陷入了某种死锁,函数没有返回。
建议的解决方案
添加AsAsyncEnumerable 可以解决问题,并且函数执行得非常快:
using (var context = new MyContext())
{
return await context.Accounts
.AsNoTracking()
.AsAsyncEnumerable()
.Where(account => SOME_CONDITIONS)
.ToArrayAsync()
.ConfigureAwait(false);
}
问题
我看到建议使用 AsEnumerable/AsAsyncEnumerable/AsQueryable 在 .net core 6 上使用 EF 进行调用。
什么时候应该使用AsEnumerable/AsAsyncEnumerable/AsQueryable?
【问题讨论】:
-
能否将帖子缩减为一个问题?我很难一次写出一个答案来解决所有问题
-
@TheTanic 我会试试的
标签: c# entity-framework .net-core