Private
Public Access
1
0

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:
Catherine Renelle
2026-02-14 17:00:47 -05:00
parent b7ef9e36ce
commit 7efeb4957b
+3 -2
View File
@@ -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();