ToListAsync () muy lento en comparación con ToList ()

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

Pregunta

Tengo una consulta de LINQ compleja con agrupación y múltiples incluye. Descubrí que ToListAsync () tarda más de un segundo en completarse, mientras que ToList () regresa en una fracción de segundo.

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

¿Estoy haciendo algo mal o es un problema con el marco de la entidad?

Aquí está la consulta:

            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;

Respuesta popular

Hay demasiadas variables aquí. Sin embargo, en términos generales, los métodos asíncronos tardarán más en devolverse que los métodos de sincronización, simplemente porque asíncrono tiene más gastos generales. Ya sea que se trate de la demora total que está viendo o no, no hay manera de saberlo, al menos con la información que ha proporcionado.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué