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");
|
var l = account.LoanDetail ?? throw new KeyNotFoundException("No loan detail found");
|
||||||
|
|
||||||
_db.AmortizationEntries.RemoveRange(l.AmortizationEntries);
|
l.AmortizationEntries.Clear();
|
||||||
|
|
||||||
l.OriginalBalance = request.OriginalBalance;
|
l.OriginalBalance = request.OriginalBalance;
|
||||||
l.InterestRate = request.InterestRate;
|
l.InterestRate = request.InterestRate;
|
||||||
@@ -82,7 +82,8 @@ public class LoanService : ILoanService
|
|||||||
l.ExtraPayment = request.ExtraPayment;
|
l.ExtraPayment = request.ExtraPayment;
|
||||||
|
|
||||||
var entries = GenerateAmortizationSchedule(l);
|
var entries = GenerateAmortizationSchedule(l);
|
||||||
l.AmortizationEntries = entries;
|
foreach (var entry in entries)
|
||||||
|
l.AmortizationEntries.Add(entry);
|
||||||
await _db.SaveChangesAsync();
|
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();
|
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