This commit is contained in:
parent
5384a5893b
commit
4dc8849b31
1 changed files with 31 additions and 4 deletions
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue