Update Pipeline
SkillDev toolsGives your agent implementation details for EF Core SaveChanges and the update pipeline when editing related code.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Update Pipeline skill
About this capability
Implementation details for EF Core SaveChanges and the update pipeline. Use when changing CommandBatchPreparer, UpdateSqlGenerator, ModificationCommand, or related classes.
What this skill tells your AI
The instructions your AI receives, as published by dotnet/efcore in .agents/skills/update-pipeline/SKILL.md and read by ahel’s review.
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 table row, composed of ColumnModification per column
→ SharedTableEntryMap is used to track entries mapped to the same row
→ 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()
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
Signals
- GitHub stars
- 15k
- Forks
- 3k
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
update-pipeline- Source
- github.com/dotnet/efcore