EntityFramework ToListAsync() не работает
-
21-12-2019 - |
Вопрос
Я пытаюсь вызвать метод EF ToListAsync.Но ничего не произошло - никаких исключений, никакого тайм-аута, просто бег.
Это мой код.
private IQueryable<Place> placeCompleteQuery;
protected IQueryable<Place> PlaceCompleteQuery
{
get
{
return this.placeCompleteQuery ?? (this.placeCompleteQuery = this.Context.Places.Include(p => p.Address).
Include(p => p.CreatedBy).
Include(p => p.Source).
Include(p => p.Type.Translations).
Include(p => p.Ratings));
}
}
public async Task<IList<Place>> GetPlacesByLocationAsync(DbGeography location, int radius)
{
List<Place> temporaryResult = PlaceCompleteQuery.Where(p => p.Location.Distance(location) <= radius).
ToList();
return await PlaceCompleteQuery.Where(p => p.Location.Distance(location) <= radius).
ToListAsync();
}
Первый вызов синхронизации метода ToList немедленно возвращает результат.Второй асинхронный вызов ToListAsync все еще выполняется без каких-либо результатов и исключений.
Какие-либо предложения?
Решение
Я подозреваю, что дальше в стеке вызовов ваш код вызывает Task.Wait
или Task<T>.Result
.Если вы сделаете это в потоке пользовательского интерфейса или из контекста запроса ASP.NET, ваш код зайдет в тупик, как я объясняю в своем блоге.
Чтобы это исправить, используйте await
вместо Task.Wait
или Task<T>.Result
.
Не связан с StackOverflow