skills/dotnet/efcore/change-tracking

change-tracking

Installation
SKILL.md

Change Tracking

Manages entity states and detects changes for SaveChanges().

Core Components

  • StateManager — central engine, identity maps, tracks all entities
  • InternalEntityEntry — per-entity state, property flags, snapshots
  • SnapshotFactoryFactory subclasses build snapshot factories for change detection
  • PropertyAccessorsFactory, ClrPropertyGetterFactory and ClrPropertySetterFactory compile property accessors for efficient snapshotting and change detection
    • Ordinals in indices parameter specify element at each complex collection depth

Testing

Unit tests: test/EFCore.Tests/ChangeTracking/. Functional tests: test/EFCore.Specification.Tests/GraphUpdates/.

Common Pitfalls

Pitfall Solution
There is a failure when there is shared identity entry (Added and Deleted) Add code that checks SharedIdentityEntry

Validation

  • DetectChanges() identifies modified properties via snapshot comparison
  • Setting original values marks properties as modified or unchanged based on comparison with current values
Weekly Installs
1
Repository
dotnet/efcore
GitHub Stars
14.6K
First Seen
Mar 30, 2026