函数需要返回Task<List<Record>>
以下两个选项均返回Task<List<Record>>
,哪个更有效?这里有什么标准的方法吗?
选项1:
Task<List<Record>> GetRecords()
{
return
DbContext.Set<Record>.Where(predicate).ToListAsync();
}
选项2:
Task<List<Record>> GetRecords()
{
return
DbContext.Set<Record>.Where(predicate).AsAsyncEnumerable().ToList();
}
答案 0 :(得分:6)
虽然pfx的现有答案对于.NET Core 2.x和更早版本仍然适用,但AsAsyncEnumerable
已正式添加到.NET Core3.x。有关更多信息,请参见Ian Kemp的评论。
答案 1 :(得分:1)
选择选项1 ToListAsync
,因为AsAsyncEnumerable
的{{3}}明确提到了
这是支持Entity Framework Core的内部API 基础架构,并且不受与相同的兼容性标准的约束 公共API。在任何情况下,如有更改或删除,恕不另行通知 发布。您只应在极端情况下直接在代码中使用它 注意并知道这样做可能会导致应用程序失败 更新到新的Entity Framework Core版本时。
此API支持Entity Framework Core基础结构,但不支持 旨在直接从您的代码中使用。该API可能会更改或 在将来的版本中删除。