5

函数需要返回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();
}

4

2 回答 2

7

虽然 pfx 的现有答案对于 .NET Core 2.x 及更早版本仍然适用,AsAsyncEnumerable但已正式添加到 .NET Core 3.x 中。有关更多信息,请参阅 Ian Kemp 的评论。

于 2020-03-17T15:38:29.067 回答
5

请注意,这是 .NET Core 3.x 之前的答案。
在下面的@IanKemp 评论中找到更新。

选择选项 1ToListAsync作为明确提及的源代码AsAsyncEnumerable

这是一个支持 Entity Framework Core 基础设施的内部 API,不受与公共 API 相同的兼容性标准的约束。它可能会在任何版本中更改或删除,恕不另行通知。您应该非常谨慎地直接在代码中使用它,并且知道这样做可能会在更新到新的 Entity Framework Core 版本时导致应用程序失败。

官方文档 提到

此 API 支持 Entity Framework Core 基础架构,不打算直接从您的代码中使用。此 API 可能会在未来的版本中更改或删除。

于 2019-05-16T20:52:05.683 回答