2016-02-15 4 views
3

У меня есть метод Async на C#, который вызывает функцию SQL, возвращающую true или false, и метод возвращает переменную bool, которая является истиной или ложью.Асинхронный метод, возвращающий 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; 
    } 

, когда я пытаюсь это, я получаю сообщение об ошибке в этом возвращении линии ждет queryResult, которые не могут ждать BOOL.

+0

'queryResult' - это просто переменная' bool'. Там нет ничего асинхронного. И я также не вижу никакой структуры сущности ... –

+0

Структура @thefiloe не является главной проблемой здесь, поэтому я упрощаю код. Он вызывает функцию и возвращает true или false. Мне нужно это как асинхронный метод. – Alma

ответ

5

Single()<T>, а не Task<T>. Что вы хотите SingleAsync():

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

Кроме того, вы не можете иметь свой AWAIT вне ваших с помощью утверждений, потому что тогда ваш контекст DB будет расположен перед операцией асинхронной является compelte.

Смежные вопросы