/// <summary>Сохраняет лоты пачками, чтобы работало быстрее.</summary> public static void SavePositionsAsPackages(List <Position> allPositions) { AucTraderDbContext context = new AucTraderDbContext(); // Сохраняем по 300 штук. const int MX = 300; int mx = MX; for (int i = 0; i < allPositions.Count; i++) { Position aucPosition = allPositions[i]; context.Positions.AddOrUpdate((Position)aucPosition); // Пришло ли время сохранять. if (i == mx) { mx += MX; context.SaveChanges(); // Пересоздаем контекст, вроде так еще быстрее работает. context.Dispose(); context = new AucTraderDbContext(); } } // Сохраняем то, что осталось. context.SaveChanges(); context.Dispose(); AppLogHelper.TraceInformation(String.Format("Сохранено {0} записей.", allPositions.Count)); }