@@ -165,20 +165,25 @@ protected override SqlString ApplyLocks(SqlString sqlSelectString, IDictionary<s
165165 return sqlSelectString ;
166166 }
167167
168- Dictionary < string , LockMode > aliasedLockModes = new Dictionary < string , LockMode > ( ) ;
168+ // Dictionary<string, LockMode> aliasedLockModes = new Dictionary<string, LockMode>();
169169 Dictionary < string , string [ ] > keyColumnNames = dialect . ForUpdateOfColumns ? new Dictionary < string , string [ ] > ( ) : null ;
170170 string [ ] drivingSqlAliases = Aliases ;
171- for ( int i = 0 ; i < drivingSqlAliases . Length ; i ++ )
171+
172+ //NH-3710: if we are issuing an aggregation function, Aliases will be null
173+ if ( drivingSqlAliases != null )
172174 {
173- LockMode lockMode ;
174- if ( lockModes . TryGetValue ( drivingSqlAliases [ i ] , out lockMode ) )
175+ for ( int i = 0 ; i < drivingSqlAliases . Length ; i ++ )
175176 {
176- ILockable drivingPersister = ( ILockable ) EntityPersisters [ i ] ;
177- string rootSqlAlias = drivingPersister . GetRootTableAlias ( drivingSqlAliases [ i ] ) ;
178- aliasedLockModes [ rootSqlAlias ] = lockMode ;
179- if ( keyColumnNames != null )
177+ LockMode lockMode ;
178+ if ( lockModes . TryGetValue ( drivingSqlAliases [ i ] , out lockMode ) )
180179 {
181- keyColumnNames [ rootSqlAlias ] = drivingPersister . RootTableIdentifierColumnNames ;
180+ ILockable drivingPersister = ( ILockable ) EntityPersisters [ i ] ;
181+ string rootSqlAlias = drivingPersister . GetRootTableAlias ( drivingSqlAliases [ i ] ) ;
182+ //aliasedLockModes[rootSqlAlias] = lockMode;
183+ if ( keyColumnNames != null )
184+ {
185+ keyColumnNames [ rootSqlAlias ] = drivingPersister . RootTableIdentifierColumnNames ;
186+ }
182187 }
183188 }
184189 }
0 commit comments