ToListAsync () molto lento rispetto a ToList ()

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

Domanda

Ho una query LINQ complessa con raggruppamenti e inclusioni multiple. Ho scoperto che ToListAsync () richiede più secondi per completare, mentre ToList () restituisce in una frazione di secondo.

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

Sto facendo qualcosa di sbagliato o è un problema con il framework delle entità?

Ecco la query:

            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;

Risposta popolare

Ci sono troppe variabili qui. Tuttavia, in generale, i metodi asincroni richiederanno più tempo per la restituzione dei metodi di sincronizzazione, semplicemente perché l'async ha un sovraccarico maggiore. Indipendentemente dal fatto che conti per l'intero ritardo che stai vedendo o meno, non c'è modo di dirlo, almeno con le informazioni che hai fornito.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché