我正在使用MVC5中的Identity 2.0,并且我试图获得当前用户的第一个角色。
这段代码没有报告任何错误:
var DatabaseContext = new ApplicationDbContext();
var thisUserAccount = DatabaseContext.Users.FirstAsync(u => u.Id == Id);
这段代码:
var DatabaseContext = new ApplicationDbContext();
var thisUserAccount = await DatabaseContext.Users.FirstAsync(u => u.Id == Id);
报告以下错误:
等待'运算符只能在异步方法中使用。考虑使用' async'标记此方法。修饰符并将其返回类型更改为'任务'
该方法是一种异步方法,为什么我不能使用"等待"?
另外,将致电:
DatabaseContext.Users.Load();
在FirstAsync优化之前(而不是构建我假设FirstSync所做的ToList)?
我仍然试图掌握异步内容可以做的事情,因此非常感谢任何有用的链接。
答案 0 :(得分:5)
您需要将使用await
的方法标记为异步:
async Task<UserAccount> DoStuff()
{
var DatabaseContext = new ApplicationDbContext();
var thisUserAccount = await DatabaseContext.Users.FirstAsync(u => u.Id == Id);
return thisUserAccount;
}
这就是错误消息告诉你的。
答案 1 :(得分:2)
以下特征总结了使方法异步的原因(您缺少第一个)。
<TResult>
如果您的方法有一个return语句,其中
操作数的类型为TResult。 以下链接使用async
和await
提供了异步编程的概述:
http://msdn.microsoft.com/en-us/library/hh191443.aspx