@@ -44,6 +44,8 @@ private readonly EntityReferenceMap _entityReferenceMap
4444 private IIdentityMap _identityMap1 ;
4545 private Dictionary < IKey , IIdentityMap > _identityMaps ;
4646 private bool _needsUnsubscribe ;
47+ private IChangeDetector _changeDetector ;
48+ private bool _changeDetectorInitialized ;
4749
4850 private readonly IDiagnosticsLogger < DbLoggerCategory . ChangeTracking > _changeTrackingLogger ;
4951 private readonly IInternalEntityEntryFactory _internalEntityEntryFactory ;
@@ -81,6 +83,7 @@ public StateManager([NotNull] StateManagerDependencies dependencies)
8183
8284 UpdateLogger = dependencies . UpdateLogger ;
8385 _changeTrackingLogger = dependencies . ChangeTrackingLogger ;
86+ _changeDetectorInitialized = false ;
8487 }
8588
8689 /// <summary>
@@ -987,10 +990,14 @@ public virtual void CascadeDelete(InternalEntityEntry entry, bool force, IEnumer
987990 {
988991 var doCascadeDelete = force || CascadeDeleteTiming != CascadeTiming . Never ;
989992 var principalIsDetached = entry . EntityState == EntityState . Detached ;
990- var changeDetector = Context . ChangeTracker . AutoDetectChangesEnabled
991- && ( string ) Context . Model [ CoreAnnotationNames . SkipDetectChangesAnnotation ] != "true"
992- ? Context . GetDependencies ( ) . ChangeDetector
993- : null ;
993+ if ( ! _changeDetectorInitialized )
994+ {
995+ _changeDetector = Context . ChangeTracker . AutoDetectChangesEnabled
996+ && ( string ) Context . Model [ CoreAnnotationNames . SkipDetectChangesAnnotation ] != "true"
997+ ? Context . GetDependencies ( ) . ChangeDetector
998+ : null ;
999+ _changeDetectorInitialized = true ;
1000+ }
9941001
9951002 foreignKeys ??= entry . EntityType . GetReferencingForeignKeys ( ) ;
9961003 foreach ( var fk in foreignKeys )
@@ -1008,7 +1015,7 @@ public virtual void CascadeDelete(InternalEntityEntry entry, bool force, IEnumer
10081015 continue ;
10091016 }
10101017
1011- changeDetector ? . DetectChanges ( dependent ) ;
1018+ _changeDetector ? . DetectChanges ( dependent ) ;
10121019
10131020 if ( dependent . EntityState != EntityState . Deleted
10141021 && dependent . EntityState != EntityState . Detached
0 commit comments