EntityFramework ToListAsync () не работает

.net async-await c# entity-framework-6

Вопрос

Я пытаюсь вызвать метод 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 .



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему