我试图让下面的代码尽快运行。大约需要几分钟才能将结果添加到最终输出。
此代码是获取车辆信息的 API 端点的一部分,foreach 循环遍历每辆车以计算 PlateVehicle 表和另一个保单表中的车牌数量,以获取保险使用情况。
foreach(var vehicle in result)
{
//Get total Plates Count
var plates = await _context.PlateVehicles
.Where(a => a.VehicleId.Equals(vehicle.VehicleId)
&& a.Status=="Active").ToListAsync();
vehicle.PlatesCount = plates.Count();
//Get Insurance Use from Policy
var policyInfo = await _context.Policies
.Where(a=>a.Vehicle_Id.Equals(vehicle.VehicleId)).FirstOrDefaultAsync();
if (policyInfo != null)
{
vehicle.InsuranceUse = policyInfo.Class == null ? string.Empty : policyInfo.Class;
finalOutput.Add(vehicle);
}
}
数据库中有大约6000条车辆记录,目前大约需要2分钟才能得到结果。任何建议都非常感激。谢谢。
您正在循环车辆并在每个循环中调用 _context (数据库)。因此,如果有 6000 条记录,那么本质上您将调用数据库 6000 次。这就是为什么需要这么长时间才能通过。我建议创建一个存储过程或视图来获取必要的数据并调用一次。