fix method
All checks were successful
Build & Deploy on Dev / build (push) Successful in 49s

This commit is contained in:
Suphonchai Phoonsawat 2026-05-12 13:36:39 +07:00
parent 5384a5893b
commit 4dc8849b31

View file

@ -737,6 +737,7 @@ namespace BMA.EHR.Recruit.Service.Controllers
};
await _context.RecruitImports.AddAsync(imported);
await _context.SaveChangesAsync(); // Save import first to get Id
// import datafile
System.IO.File.WriteAllBytes(importFile, fileContent);
@ -869,8 +870,8 @@ namespace BMA.EHR.Recruit.Service.Controllers
{
_context.SaveChanges();
_context.ChangeTracker.Clear();
// Re-attach the import entity after clearing the tracker
_context.RecruitImports.Attach(imported);
// Re-attach the import entity as Unchanged after clearing the tracker
_context.Entry(imported).State = EntityState.Unchanged;
batchCount = 0;
}
@ -1101,6 +1102,8 @@ namespace BMA.EHR.Recruit.Service.Controllers
var cols = workSheet.GetHeaderColumns();
int row = 2;
int batchCount = 0;
const int batchSize = 500;
while (row <= totalRows)
{
@ -1247,13 +1250,23 @@ namespace BMA.EHR.Recruit.Service.Controllers
//imported.Recruits.Add(r);
row++;
batchCount++;
// Batch save to prevent OutOfMemoryException on large imports
if (batchCount >= batchSize)
{
_context.SaveChanges();
_context.ChangeTracker.Clear();
// Re-attach the import entity as Unchanged after clearing the tracker
_context.Entry(imported).State = EntityState.Unchanged;
batchCount = 0;
}
}
}
}
// finally save to database
// Save remaining records in the last batch
_context.SaveChanges();
return Success();
@ -1605,6 +1618,8 @@ namespace BMA.EHR.Recruit.Service.Controllers
{
//var totalRows = workSheet.Dimension.Rows;
int row = 7; // เริ่มที่ row 7 ตามตัวอย่างไฟล์
int batchCount = 0;
const int batchSize = 500;
var endRow = workSheet.Dimension.End.Row; // แถวสุดท้ายที่มีข้อมูล
while (row <= endRow)
@ -1623,13 +1638,25 @@ namespace BMA.EHR.Recruit.Service.Controllers
existingScore.LastUpdatedAt = DateTime.Now;
existingScore.LastUpdateUserId = UserId ?? "";
existingScore.LastUpdateFullName = FullName ?? "System Administrator";
batchCount++;
}
row++;
// Batch save to prevent OutOfMemoryException on large imports
if (batchCount >= batchSize)
{
await _context.SaveChangesAsync();
_context.ChangeTracker.Clear();
// Re-attach the import entity as Unchanged after clearing the tracker
_context.Entry(rec_import).State = EntityState.Unchanged;
batchCount = 0;
}
}
}
}
// Save remaining records in the last batch
await _context.SaveChangesAsync();
return Success();