2017-02-21 59 views
0

我有一個.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試過了,它的工作原理,謝謝 –

回答

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; 
相關問題