返回bool的异步方法

时间:2016-02-15 23:13:24

标签: c#

我在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。

1 个答案:

答案 0 :(得分:5)

Single()返回<T>,而不是Task<T>。你想要的是SingleAsync()

    return await authorizationContext.Database
                                     .SqlQuery<bool>(sqlStatement)
                                     .SingleAsync();

此外,您不能在using语句之外等待,因为在异步操作强制执行之前,您的数据库上下文将被释放。