update-pipeline
Implementation details for EF Core SaveChanges and the update pipeline. Use when changing CommandBatchPreparer, UpdateSqlGenerator, ModificationCommand, or related classes.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Update Pipeline
Converts tracked entity changes into database INSERT/UPDATE/DELETE commands during SaveChanges().
Flow
SaveChanges() → DetectChanges() → IDatabase.SaveChanges()
→ UpdateAdapter creates IUpdateEntry list
→ CommandBatchPreparer.BatchCommands()
→ ModificationCommand per entity (maps to table row), composed of ColumnModification (maps to column value)
→ Topological sort via Multigraph (FK dependency ordering)
→ Groups into ModificationCommandBatch (respects max batch size)
→ UpdateSqlGenerator generates SQL per batch
→ BatchExecutor executes all batches in a transaction
→ StateManager.AcceptAllChanges()
Other Key Files:
-
src/EFCore.Relational/Update/Internal/SharedTableEntryMap.cs— manages entries mapped to the same row
Concurrency
Concurrency tokens → WHERE conditions on UPDATE/DELETE. AffectedCountModificationCommandBatch checks affected rows. Throws DbUpdateConcurrencyException on mismatch.
Validation
-
SaveChanges()returns expected affected row count - Store-generated values propagate back to entities after INSERT/UPDATE
-
DbUpdateConcurrencyExceptionthrown when expected for stale data
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-03-11
- Mise à jour de l’index
- 2026-03-11
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!