检索所有用户asyncronously .NET的MVC

问题描述:

我有一个.NET MVC应用程序,我想创建一个函数来从我的数据库表中获取所有用户:检索所有用户asyncronously .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 <用户>不包含定义GetAwaiter

这听起来像的ServiceProvider不允许的asyncronous通话检索数据库中的所有行。我明白,检索表中的所有东西不涉及复杂的数据库筛选如SELECT,WHERE甚至JOIN,但不应该“让他们全部”电话反正需要一些时间?

+0

另外'GetRequiredService ()'必须是一个'async'方法。 –

+1

你有没有尝试过'var users = await context.User.ToListAsync();',这将需要'System.Data.Entity'命名空间 –

+0

@AdamT试过了,它的工作原理,谢谢 –

您是否试过以下代码?

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;