fix(migration): import — ChangeTracker.Clear при сбое товара (устранить каскад потери прогона)
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
99c2fc1e5a
commit
1ee3c9b598
|
|
@ -538,13 +538,19 @@ await foreach (var p in _client.StreamProductsAsync(token, ct, includeArchived:
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_log.LogWarning(ex, "Failed to import MoySklad product {Name}", p.Name);
|
||||
errors.Add($"{p.Name}: {ex.Message}");
|
||||
// ВАЖНО: очищаем ChangeTracker, иначе неудачный батч-SaveChanges оставляет
|
||||
// «отравленные» сущности и КАЖДЫЙ следующий SaveChanges падает каскадом
|
||||
// (теряется весь прогон). Теперь сбой одного товара не роняет остальные.
|
||||
_db.ChangeTracker.Clear();
|
||||
var inner = ex.InnerException?.Message ?? ex.Message;
|
||||
_log.LogWarning(ex, "Failed to import MoySklad product {Name}: {Inner}", p.Name, inner);
|
||||
errors.Add($"{p.Name}: {inner}");
|
||||
if (progress is not null) progress.Errors = errors;
|
||||
}
|
||||
}
|
||||
|
||||
await _db.SaveChangesAsync(ct);
|
||||
try { await _db.SaveChangesAsync(ct); }
|
||||
catch (Exception ex) { _db.ChangeTracker.Clear(); _log.LogWarning(ex, "Final products SaveChanges failed: {Inner}", ex.InnerException?.Message ?? ex.Message); }
|
||||
|
||||
// Финальная проверка дубликатов штрихкодов (на всякий, если
|
||||
// уникальный индекс был нарушен исторически).
|
||||
|
|
|
|||
Loading…
Reference in a new issue