我创建了创建一些报告的存储过程。标准 ID、用户名、NumOfSomething、月份。
现在我想获得这个异步存储过程的结果。我可以用标准同步方式做到这一点:
public async ValueTask<List<ReportDto>> GetReport(int managerId)
{
var result = reportContext.Database.SqlQuery<ReportDto>($"MonthlyNumOfCasesPerUserReport @ManagerId = {managerId}").ToList();
return result;
}
这段代码工作得很好,因为它已经将结果映射到我的实体中,但我想异步执行它。
我已经尝试过 ToListAsync() 但出现错误:
System.InvalidOperationException:源 IQueryable 没有 实现 IDbAsyncEnumerable
。仅有的 实现 IDbAsyncEnumerable 的源可用于实体 框架异步操作。
问题是我在 using 部分中有 System.Data.Entity。 问题解决了。
问题与将 EntityFramework 和 EntityFrameworkCore 混合在一个文件中有关。 DbContext 文件使用 System.Data.Entity(来自 EF)导致了问题。