EntityFramework ToListAsync() ne fonctionne pas
-
21-12-2019 - |
Question
J'essaie d'appeler la méthode EF ToListAsync.Mais rien ne s'est produit - aucune exception, aucun délai d'attente en cours d'exécution.
C'est mon code.
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();
}
Le premier appel de synchronisation de la méthode ToList renvoie immédiatement le résultat.Le deuxième appel asynchrone de ToListAsync toujours en cours d'exécution sans résultat ni exception.
Aucune suggestion?
La solution
Je soupçonne que plus haut dans votre pile d'appels, votre code appelle Task.Wait
ou Task<T>.Result
.Si vous faites cela sur le thread de l'interface utilisateur ou à partir d'un contexte de requête ASP.NET, votre code sera dans une impasse, comme je l'explique sur mon blog.
Pour le réparer, utilisez await
au lieu de Task.Wait
ou Task<T>.Result
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow