@@ -81,15 +81,15 @@ public IResourceHookContainer<TEntity> GetResourceHookContainer<TEntity>(Resourc
8181 return ( IResourceHookContainer < TEntity > ) GetResourceHookContainer ( typeof ( TEntity ) , hook ) ;
8282 }
8383
84- public IEnumerable LoadDbValues ( DependentType entityType , IEnumerable entities , ResourceHook hook , params RelationshipProxy [ ] relationships )
84+ public IEnumerable LoadDbValues ( PrincipalType repositoryEntityType , Type affectedHookEntityType , IEnumerable entities , ResourceHook hook , params RelationshipProxy [ ] relationships )
8585 {
86- if ( ! ShouldLoadDbValues ( entityType , hook ) ) return null ;
86+ if ( ! ShouldLoadDbValues ( affectedHookEntityType , hook ) ) return null ;
8787
8888 var paths = relationships . Select ( p => p . Attribute . RelationshipPath ) . ToArray ( ) ;
89- var idType = GetIdentifierType ( entityType ) ;
89+ var idType = GetIdentifierType ( repositoryEntityType ) ;
9090 var parameterizedGetWhere = GetType ( )
9191 . GetMethod ( nameof ( GetWhereAndInclude ) , BindingFlags . NonPublic | BindingFlags . Instance )
92- . MakeGenericMethod ( entityType , idType ) ;
92+ . MakeGenericMethod ( repositoryEntityType , idType ) ;
9393 var casted = ( ( IEnumerable < object > ) entities ) . Cast < IIdentifiable > ( ) ;
9494 var ids = casted . Select ( e => e . StringId ) . Cast ( idType ) ;
9595 var values = ( IEnumerable ) parameterizedGetWhere . Invoke ( this , new object [ ] { ids , paths } ) ;
@@ -98,16 +98,15 @@ public IEnumerable LoadDbValues(DependentType entityType, IEnumerable entities,
9898
9999 public HashSet < TEntity > LoadDbValues < TEntity > ( IEnumerable < TEntity > entities , ResourceHook hook , params RelationshipProxy [ ] relationships ) where TEntity : class , IIdentifiable
100100 {
101- var dbValues = LoadDbValues ( typeof ( TEntity ) , entities , hook , relationships ) ? . Cast < TEntity > ( ) ;
101+ var entityType = typeof ( TEntity ) ;
102+ var dbValues = LoadDbValues ( entityType , entityType , entities , hook , relationships ) ? . Cast < TEntity > ( ) ;
102103 if ( dbValues == null ) return null ;
103104 return new HashSet < TEntity > ( dbValues ) ;
104105 }
105106
106107
107108 bool ShouldLoadDbValues ( DependentType entityType , ResourceHook hook )
108109 {
109- if ( hook == ResourceHook . BeforeImplicitUpdateRelationship ) return true ;
110-
111110 var discovery = GetHookDiscovery ( entityType ) ;
112111
113112 if ( discovery . DatabaseDiffDisabledHooks . Contains ( hook ) )
@@ -122,7 +121,6 @@ bool ShouldLoadDbValues(DependentType entityType, ResourceHook hook)
122121 {
123122 return _context . Options . LoadDatabaseValues ;
124123 }
125-
126124 }
127125
128126 bool ShouldExecuteHook ( DependentType entityType , ResourceHook hook )
@@ -180,7 +178,7 @@ public Dictionary<RelationshipProxy, IEnumerable> LoadImplicitlyAffected(
180178 foreach ( var kvp in principalEntitiesByRelation )
181179 {
182180 if ( IsHasManyThrough ( kvp , out var principals , out var relationship ) ) continue ;
183- var includedPrincipals = LoadDbValues ( relationship . PrincipalType , principals , ResourceHook . BeforeImplicitUpdateRelationship , relationship ) ;
181+ var includedPrincipals = LoadDbValues ( relationship . PrincipalType , relationship . DependentType , principals , ResourceHook . BeforeImplicitUpdateRelationship , relationship ) ;
184182
185183 foreach ( IIdentifiable ip in includedPrincipals )
186184 {
0 commit comments