From e8681834f256eee6c72e63284da6313fc7c31d43 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Tue, 19 May 2026 16:53:27 +0700 Subject: [PATCH] fix again --- Services/ImportBackgroundService.cs | 32 +++++++++++++---------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/Services/ImportBackgroundService.cs b/Services/ImportBackgroundService.cs index 350c5cd..acf058f 100644 --- a/Services/ImportBackgroundService.cs +++ b/Services/ImportBackgroundService.cs @@ -583,10 +583,8 @@ public class ImportBackgroundService : BackgroundService // Clear tracker to avoid stale references after BulkDelete (which bypasses EF tracking) _context.ChangeTracker.Clear(); - // Add history record using Attach stub for navigation (no explicit FK property on model) - var importStub = new RecruitImport { Id = rec_import_id }; - _context.Attach(importStub); - _context.RecruitImportHistories.Add(new RecruitImportHistory + // Add history record — set FK shadow property directly to avoid Attach side-effects + var historyEntry = _context.RecruitImportHistories.Add(new RecruitImportHistory { Description = "นำเข้าข้อมูลผลคะแนนสอบ", CreatedAt = DateTime.Now, @@ -595,24 +593,22 @@ public class ImportBackgroundService : BackgroundService LastUpdatedAt = DateTime.Now, LastUpdateUserId = job.UserId ?? "", LastUpdateFullName = job.FullName ?? "System Administrator", - RecruitImport = importStub, }); + historyEntry.Property("RecruitImportId").CurrentValue = rec_import_id; // get doc from minio var doc = await _minioService.UploadFileAsync(new DummyFormFile(job.ImportFile)); - var imported = new ScoreImport - { - Year = rec_import_year, - RecruitImportId = rec_import_id, - ImportFile = doc, - CreatedAt = DateTime.Now, - CreatedUserId = job.UserId ?? "", - CreatedFullName = job.FullName ?? "System Administrator", - LastUpdatedAt = DateTime.Now, - LastUpdateUserId = job.UserId ?? "", - LastUpdateFullName = job.FullName ?? "System Administrator", - Scores = new List() - }; + var imported = new ScoreImport(); + imported.Year = rec_import_year; + imported.RecruitImportId = rec_import_id; + imported.ImportFile = doc; + imported.CreatedAt = DateTime.Now; + imported.CreatedUserId = job.UserId ?? ""; + imported.CreatedFullName = job.FullName ?? "System Administrator"; + imported.LastUpdatedAt = DateTime.Now; + imported.LastUpdateUserId = job.UserId ?? ""; + imported.LastUpdateFullName = job.FullName ?? "System Administrator"; + imported.Scores = new List(); // Save ScoreImport parent first to get its Id _context.ScoreImports.Add(imported);