Код: Выделить всё
using (var context = new ApplicationDbContext())
{
var dispenseToDelete = context.tblDispense.Where(p => p.HfrCode == facilityName);
if (dispenseToDelete.Any())
{
context.tblDispense.RemoveRange(dispenseToDelete);
context.SaveChanges();
}
}
using (StreamReader sr = new StreamReader(filePath))
using (JsonTextReader reader = new JsonTextReader(sr))
{
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartArray && reader.Path == "tblDispense")
{
using (var context = new ApplicationDbContext())
{
List tblDispenseBatch = new List();
int batchSize = 1000;
while (reader.Read() && reader.TokenType != JsonToken.EndArray)
{
if (reader.TokenType == JsonToken.StartObject)
{
JObject item = JObject.Load(reader);
TblDispense tblDispense = item.ToObject();
tblDispense.UUID = Guid.NewGuid().ToString() + "." + facilityName;
tblDispense.MSDCode = tblDispense.MSDCode + '.' + facilityName;
tblDispense.DispenseID = tblDispense.DispenseID + "." + facilityName;
tblDispense.DispenseRecordId = tblDispense.DispenseRecordId + '.' + facilityName;
tblDispense.HfrCode = facilityName;
tblDispenseBatch.Add(tblDispense);
// Batch insert to avoid memory overload
if (tblDispenseBatch.Count >= batchSize)
{
try
{
context.tblDispense.AddRange(tblDispenseBatch);
context.SaveChanges();
tblDispenseBatch.Clear();
}
catch (DbUpdateException ex)
{
Console.WriteLine($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
logger.LogError($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
}
}
}
}
// Insert remaining items in the batch
if (tblDispenseBatch.Count > 0)
{
try
{
context.tblDispense.AddRange(tblDispenseBatch);
context.SaveChanges();
tblDispenseBatch.Clear();
}
catch (DbUpdateException ex)
{
Console.WriteLine($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
logger.LogError($"[{facilityName}] an error occurred while saving the batch: {ex.InnerException?.Message}");
}
}
}
break;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... ta-so-that