Я работаю над WebAPI в .NET Core, для доступа к БД у меня есть реализация шаблона синхронного репозитория.Сейчас я меняю подход с синхронного на асинхронный и столкнулся с парой проблем, которые мне не понятны.
У меня есть эта функция:
public List<object> Save(List<T> entities)
{
return entities.Select(x => _session.Save(x)).ToList();
}
Как сделать это асинхронным?
Вторая функция:
public async Task<List<Comment>> GetCommentsForPost(long postId)
{
try
{
return await (List<Comment>)_session.QueryOver<Comment>()
.Where(x => x.PostId.Id == postId && !x.Deleted)
.OrderBy(x => x.Created).Desc
.ListAsync().Result;
}
catch (Exception e)
{
logger.Error(e.Message + e.InnerException + e.StackTrace);
return null;
}
}
Эти две функции не связаны.Я положил их, чтобы я мог показать, где у меня проблемы.Как видите, я пытаюсь заставить его работать во второй функции.Все проблемы, с которыми я сталкиваюсь, приводят к одной и той же ошибке: «... не содержит определения для GetAwaiter () и нет доступного метода расширения GetAwaiter (), принимающего ...»
Может кто-нибудь показать мне, как этодолжно быть сделано правильно?
РЕДАКТИРОВАТЬ: Это то, что я нашел, что работает:
var t = entities.Select(async x => await _session.SaveAsync(x)).ToList();
await Task.WhenAll(t);
return t;
Однако я не уверен, что это хороший подход?