fix method
This commit is contained in:
parent
5384a5893b
commit
f946d7d51d
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.RecruitImports.AddAsync(imported);
|
||||||
|
await _context.SaveChangesAsync(); // Save import first to get Id
|
||||||
|
|
||||||
// import datafile
|
// import datafile
|
||||||
System.IO.File.WriteAllBytes(importFile, fileContent);
|
System.IO.File.WriteAllBytes(importFile, fileContent);
|
||||||
|
|
@ -869,8 +870,8 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
||||||
{
|
{
|
||||||
_context.SaveChanges();
|
_context.SaveChanges();
|
||||||
_context.ChangeTracker.Clear();
|
_context.ChangeTracker.Clear();
|
||||||
// Re-attach the import entity after clearing the tracker
|
// Re-attach the import entity as Unchanged after clearing the tracker
|
||||||
_context.RecruitImports.Attach(imported);
|
_context.Entry(imported).State = EntityState.Unchanged;
|
||||||
batchCount = 0;
|
batchCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1101,6 +1102,8 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
||||||
var cols = workSheet.GetHeaderColumns();
|
var cols = workSheet.GetHeaderColumns();
|
||||||
|
|
||||||
int row = 2;
|
int row = 2;
|
||||||
|
int batchCount = 0;
|
||||||
|
const int batchSize = 500;
|
||||||
|
|
||||||
while (row <= totalRows)
|
while (row <= totalRows)
|
||||||
{
|
{
|
||||||
|
|
@ -1247,13 +1250,23 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
||||||
|
|
||||||
//imported.Recruits.Add(r);
|
//imported.Recruits.Add(r);
|
||||||
row++;
|
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();
|
_context.SaveChanges();
|
||||||
|
|
||||||
return Success();
|
return Success();
|
||||||
|
|
@ -1605,6 +1618,8 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
||||||
{
|
{
|
||||||
//var totalRows = workSheet.Dimension.Rows;
|
//var totalRows = workSheet.Dimension.Rows;
|
||||||
int row = 7; // เริ่มที่ row 7 ตามตัวอย่างไฟล์
|
int row = 7; // เริ่มที่ row 7 ตามตัวอย่างไฟล์
|
||||||
|
int batchCount = 0;
|
||||||
|
const int batchSize = 500;
|
||||||
var endRow = workSheet.Dimension.End.Row; // แถวสุดท้ายที่มีข้อมูล
|
var endRow = workSheet.Dimension.End.Row; // แถวสุดท้ายที่มีข้อมูล
|
||||||
|
|
||||||
while (row <= endRow)
|
while (row <= endRow)
|
||||||
|
|
@ -1623,13 +1638,25 @@ namespace BMA.EHR.Recruit.Service.Controllers
|
||||||
existingScore.LastUpdatedAt = DateTime.Now;
|
existingScore.LastUpdatedAt = DateTime.Now;
|
||||||
existingScore.LastUpdateUserId = UserId ?? "";
|
existingScore.LastUpdateUserId = UserId ?? "";
|
||||||
existingScore.LastUpdateFullName = FullName ?? "System Administrator";
|
existingScore.LastUpdateFullName = FullName ?? "System Administrator";
|
||||||
|
batchCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
row++;
|
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();
|
await _context.SaveChangesAsync();
|
||||||
return Success();
|
return Success();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue