C# 返回bool的异步方法
我在C#中有一个异步方法,它调用返回true或false的SQL函数,该方法返回的bool变量为true或false 这是我的方法:C# 返回bool的异步方法,c#,C#,我在C#中有一个异步方法,它调用返回true或false的SQL函数,该方法返回的bool变量为true或false 这是我的方法: public async Task<bool> Canlog(string userName, string pass { Context context = new Context(); bool queryResult = false; using (context )
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;
}
公共异步任务Canlog(字符串用户名,字符串传递
{
上下文=新上下文();
bool-queryResult=false;
使用(上下文)
{
使用(context.Database.Connection)
{
context.Database.Connection.Open();
字符串sqlStatment=。。。。。
queryResult=authorizationContext.Database
.SqlQuery(sqlStatment)
.Single();
}
}
返回等待查询结果;
}
当我尝试此操作时,我在这行return wait queryResult中得到了错误,它不能等待bool。Single()
返回,而不是任务。您想要的是SingleAsync()
:
return wait authorizationContext.Database
.SqlQuery(sqlStatement)
.SingleAsync();
另外,您不能在using语句之外使用WAIT,因为这样您的DB上下文将在异步操作完成之前被处理。queryResult
只是一个bool
变量。那里没有任何异步。我也看不到任何实体框架…@filoe框架不是这里的主要关注点所以我简化了代码。它调用函数并返回true或false。我需要将其作为异步方法。
return await authorizationContext.Database
.SqlQuery<bool>(sqlStatement)
.SingleAsync();