C# 返回bool的异步方法

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 )

我在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 )
        {
            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();