2017-02-21 22 views
0

У меня есть приложение .NET MVC, и я хочу, чтобы создать функцию, чтобы получить все пользователи из моей базы данных таблицы:Получить все пользователи асинхронном на .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 не допускает асинхронный вызов извлеките все строки из базы данных. Я понимаю, что извлечение всего материала в таблице не связано с сложной фильтрацией db, такой как SELECT, WHERE или даже JOIN, но не должен ли «получить их все» в любое время?

+0

Кроме того, 'GetRequiredService ()' должен быть 'метод async'. –

+1

Вы пробовали 'var users = await context.User.ToListAsync();', это потребует пространства имен 'System.Data.Entity' –

+0

@AdamT, и оно работает, спасибо –

ответ

1

Вы пробовали следующий код?

public async Task<IEnumerable<User>> GetAllAsync() 
{ 
    var context = serviceProvider.GetRequiredService<ServicesDbContext>(); 
    var users = await context.User.ToListAsync(); 

    return users; 
} 

.ToListAsync() это метод асинхронной и, следовательно, он может быть получен.

Вам нужно будет убедиться, что выполняется с помощью оператор входит:

using System.Data.Entity;