@@ -81,15 +81,15 @@ public IResourceHookContainer<TEntity> GetResourceHookContainer<TEntity>(Resourc
81
81
return ( IResourceHookContainer < TEntity > ) GetResourceHookContainer ( typeof ( TEntity ) , hook ) ;
82
82
}
83
83
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 )
85
85
{
86
- if ( ! ShouldLoadDbValues ( entityType , hook ) ) return null ;
86
+ if ( ! ShouldLoadDbValues ( affectedHookEntityType , hook ) ) return null ;
87
87
88
88
var paths = relationships . Select ( p => p . Attribute . RelationshipPath ) . ToArray ( ) ;
89
- var idType = GetIdentifierType ( entityType ) ;
89
+ var idType = GetIdentifierType ( repositoryEntityType ) ;
90
90
var parameterizedGetWhere = GetType ( )
91
91
. GetMethod ( nameof ( GetWhereAndInclude ) , BindingFlags . NonPublic | BindingFlags . Instance )
92
- . MakeGenericMethod ( entityType , idType ) ;
92
+ . MakeGenericMethod ( repositoryEntityType , idType ) ;
93
93
var casted = ( ( IEnumerable < object > ) entities ) . Cast < IIdentifiable > ( ) ;
94
94
var ids = casted . Select ( e => e . StringId ) . Cast ( idType ) ;
95
95
var values = ( IEnumerable ) parameterizedGetWhere . Invoke ( this , new object [ ] { ids , paths } ) ;
@@ -98,16 +98,15 @@ public IEnumerable LoadDbValues(DependentType entityType, IEnumerable entities,
98
98
99
99
public HashSet < TEntity > LoadDbValues < TEntity > ( IEnumerable < TEntity > entities , ResourceHook hook , params RelationshipProxy [ ] relationships ) where TEntity : class , IIdentifiable
100
100
{
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 > ( ) ;
102
103
if ( dbValues == null ) return null ;
103
104
return new HashSet < TEntity > ( dbValues ) ;
104
105
}
105
106
106
107
107
108
bool ShouldLoadDbValues ( DependentType entityType , ResourceHook hook )
108
109
{
109
- if ( hook == ResourceHook . BeforeImplicitUpdateRelationship ) return true ;
110
-
111
110
var discovery = GetHookDiscovery ( entityType ) ;
112
111
113
112
if ( discovery . DatabaseDiffDisabledHooks . Contains ( hook ) )
@@ -122,7 +121,6 @@ bool ShouldLoadDbValues(DependentType entityType, ResourceHook hook)
122
121
{
123
122
return _context . Options . LoadDatabaseValues ;
124
123
}
125
-
126
124
}
127
125
128
126
bool ShouldExecuteHook ( DependentType entityType , ResourceHook hook )
@@ -180,7 +178,7 @@ public Dictionary<RelationshipProxy, IEnumerable> LoadImplicitlyAffected(
180
178
foreach ( var kvp in principalEntitiesByRelation )
181
179
{
182
180
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 ) ;
184
182
185
183
foreach ( IIdentifiable ip in includedPrincipals )
186
184
{
0 commit comments