Fix concurrency exception when editing loan details
RemoveRange + collection replacement caused EF Core to attempt a double-delete on amortization entries. Use Clear() on the tracked collection instead, letting EF handle orphan deletion in a single pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -70,7 +70,7 @@ public class LoanService : ILoanService
|
||||
|
||||
var l = account.LoanDetail ?? throw new KeyNotFoundException("No loan detail found");
|
||||
|
||||
_db.AmortizationEntries.RemoveRange(l.AmortizationEntries);
|
||||
l.AmortizationEntries.Clear();
|
||||
|
||||
l.OriginalBalance = request.OriginalBalance;
|
||||
l.InterestRate = request.InterestRate;
|
||||
@@ -82,7 +82,8 @@ public class LoanService : ILoanService
|
||||
l.ExtraPayment = request.ExtraPayment;
|
||||
|
||||
var entries = GenerateAmortizationSchedule(l);
|
||||
l.AmortizationEntries = entries;
|
||||
foreach (var entry in entries)
|
||||
l.AmortizationEntries.Add(entry);
|
||||
await _db.SaveChangesAsync();
|
||||
|
||||
var schedule = entries.Select(e => new AmortizationEntryResponse(e.PaymentNumber, e.PaymentDate, e.PaymentAmount, e.PrincipalAmount, e.InterestAmount, e.EscrowAmount, e.RemainingBalance)).ToList();
|
||||
|
||||
Reference in New Issue
Block a user