为什么我不能等待?

bin*_*nks 0 c# asynchronous async-await

我正在使用MVC5中的Identity 2.0,我正在尝试为当前用户获得第一个角色.

这段代码不会报告任何错误:

var DatabaseContext = new ApplicationDbContext();
var thisUserAccount = DatabaseContext.Users.FirstAsync(u => u.Id == Id);
Run Code Online (Sandbox Code Playgroud)

这段代码:

var DatabaseContext = new ApplicationDbContext();
var thisUserAccount = await DatabaseContext.Users.FirstAsync(u => u.Id == Id);
Run Code Online (Sandbox Code Playgroud)

报告以下错误:

'await'运算符只能在异步方法中使用.考虑使用'async'修饰符标记此方法并将其返回类型更改为'Task'

该方法是一种异步方法,为什么我不能使用"等待"?

此外,将致电:

DatabaseContext.Users.Load();
Run Code Online (Sandbox Code Playgroud)

在FirstAsync优化之前(而不是构建我假设FirstSync的ToList)?

我仍然试图掌握异步的东西可以做什么,所以任何有用的链接将非常感激.

Sea*_*ean 5

您需要将使用的方法标记await为异步:

async Task<UserAccount> DoStuff()
{
 var DatabaseContext = new ApplicationDbContext();
 var thisUserAccount = await DatabaseContext.Users.FirstAsync(u => u.Id == Id);

 return thisUserAccount;
}
Run Code Online (Sandbox Code Playgroud)

这就是错误消息告诉你的内容.