change-tracking
Installation
SKILL.md
Change Tracking
Manages entity states and detects changes for SaveChanges().
Core Components
StateManager— central engine, identity maps, tracks all entitiesInternalEntityEntry— per-entity state, property flags, snapshotsSnapshotFactoryFactorysubclasses build snapshot factories for change detectionPropertyAccessorsFactory,ClrPropertyGetterFactoryandClrPropertySetterFactorycompile property accessors for efficient snapshotting and change detection- Ordinals in
indicesparameter specify element at each complex collection depth
- Ordinals in
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