我有一个.NET MVC应用程序,我想创建一个函数来从我的数据库表中获取所有用户:
public async Task<IEnumerable<User>> GetAllAsync()
{
var context = serviceProvider.GetRequiredService<ServicesDbContext>();
var users = await context.User;
return users;
}
我尝试制作方法async
,后者又需要await
。不幸的是,如果我等待返回context.User
,编译器会抱怨:
DbSet&LT;使用者名称&gt;不包含GetAwaiter的定义
听起来,serviceProvider不允许异步调用从数据库中检索所有行。我知道检索表中的所有内容并不涉及复杂的数据库过滤,如SELECT,WHERE甚至JOIN,但是不应该“全部获取”调用需要一些时间吗?
答案 0 :(得分:1)
您是否尝试过以下代码?
public async Task<IEnumerable<User>> GetAllAsync()
{
var context = serviceProvider.GetRequiredService<ServicesDbContext>();
var users = await context.User.ToListAsync();
return users;
}
.ToListAsync()
是一种异步方法,因此可以等待它。
您需要确保包含以下using语句:
using System.Data.Entity;