在.NET MVC上异步检索所有用户

时间:2017-02-21 09:58:51

标签: c# asp.net asp.net-mvc database model-view-controller

我有一个.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,但是不应该“全部获取”调用需要一些时间吗?

1 个答案:

答案 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;