ToListAsync () très lent comparé à ToList ()

asp.net-core-mvc entity-framework-core

Question

J'ai une requête complexe LINQ avec regroupement et plusieurs inclus. J'ai découvert que ToListAsync () prend plus de secondes à compléter, tandis que ToList () retourne une fraction de seconde.

allReservationsList = allReservations.ToList(); // fast
allReservationsList = await allReservations.ToListAsync(); // more then a second for 60 rows

Est-ce que je fais quelque chose de mal ou est-ce un problème avec le cadre d'entité?

Voici la requête:

            var reservations = db.Reservations
                .Include(r => r.PickUpLocation)
                .Include(r => r.ReturnLocation)
                .Include(r => r.RequestedVehicleModel).ThenInclude(m => m.Photos)
                .Include(r => r.RequestedVehicleModel.VehicleType.VehicleModels)
                .Include(r => r.RequestedVehicleType).ThenInclude(t => t.Photos)
                .Include(r => r.AssignedUnit.VehicleModel.VehicleType)
                .Include(r => r.DailyPrice.Currency);

            var allReservations =
                from r in reservations
                orderby r.VersionDate descending
                group r by r.BookingCode into g
                select g;

Réponse populaire

Il y a trop de variables ici. Cependant, en règle générale, le retour des méthodes asynchrones est plus long que celui des méthodes de synchronisation, tout simplement parce que la gestion asynchrone est plus lourde. Que ce soit pour tout le retard que vous constatez ou non, il n’ya aucun moyen de le savoir, du moins avec les informations que vous avez fournies.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi