不久前,我开始接触 C#,并正在寻找一些如何编写代码的最佳实践。现在,我正在使用 EF Core 并具有以下代码
var details = _dbContext.Details.Where(x => x.Name == "Button");
foreach(var detail in details)
{
...
}
为了更好地响应我尝试使用ToListAsync()
like
var details = await _dbContext.Details.Where(x => x.Name == "Button").ToListAsync();
如果我理解的话,这应该是更有效的方式。我应该总是使用ToListAsync()
before foreach
?
删除也一样。第一个
var details = _dbContext.Details.Where(x => x.Id == "Button");
_dbContext.Details.RemoveRange(details);
or
var details = await _dbContext.Details.Where(x => x.Id == "Button").ToListAsync();
_dbContext.Details.RemoveRange(details);
哪一个会更好?所以,当我不添加ToListAsync()
,那么查询将同步运行?
从操作返回 IEnumerable 会导致序列化程序进行同步集合迭代。结果是调用被阻塞并可能导致线程池饥饿。为了避免同步枚举,请在返回可枚举值之前使用 ToListAsync。
从 ASP.NET Core 3.0 开始,IAsyncEnumerable 可以用作异步枚举的 IEnumerable 的替代方案。有关详细信息,请参阅控制器操作返回类型。
欲了解更多信息,请检查ASP.NET Core 性能最佳实践 https://learn.microsoft.com/en-us/aspnet/core/performance/performance-best-practices?view=aspnetcore-5.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)