我在C#中有一个Async方法正在调用返回true或false的SQL函数,而方法正在返回true或false的bool变量。
这是我的方法:
public async Task<bool> Canlog(string userName, string pass
{
Context context = new Context();
bool queryResult = false;
using (context )
{
using (context .Database.Connection)
{
context .Database.Connection.Open();
string sqlStatment = .....
queryResult = authorizationContext.Database
.SqlQuery<bool>(sqlStatment)
.Single();
}
}
return await queryResult;
}
当我尝试这个时,我在这行中得到错误返回等待不能等待bool的queryResult。
答案 0 :(得分:5)
Single()
返回<T>
,而不是Task<T>
。你想要的是SingleAsync()
:
return await authorizationContext.Database
.SqlQuery<bool>(sqlStatement)
.SingleAsync();
此外,您不能在using语句之外等待,因为在异步操作强制执行之前,您的数据库上下文将被释放。