【发布时间】:2015-11-10 12:45:28
【问题描述】:
我有一个包含分组和多个包含的复杂 LINQ 查询。我发现 ToListAsync() 需要超过一秒才能完成,而 ToList() 会在几分之一秒内返回。
allReservationsList = allReservations.ToList(); // fast
allReservationsList = await allReservations.ToListAsync(); // more then a second for 60 rows
我做错了什么还是实体框架有问题?
这里是查询:
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;
【问题讨论】:
-
能否提供您的查询和相关代码?我唯一能说的就是克里斯在下面说的话。由于开销,一个操作的异步总是比同步调用慢。
-
@MaximeRouiller 我添加了查询。性能差异太大,无法用开销来解释,可能是 100 倍。
-
这几乎可以肯定是因为 Photos 表包含 varbinary(max) 和/或 [n]varchar(max) 列。 stackoverflow.com/questions/28543293/…
标签: asp.net-core-mvc entity-framework-core