@@ -165,20 +165,25 @@ protected override SqlString ApplyLocks(SqlString sqlSelectString, IDictionary<s
165
165
return sqlSelectString ;
166
166
}
167
167
168
- Dictionary < string , LockMode > aliasedLockModes = new Dictionary < string , LockMode > ( ) ;
168
+ // Dictionary<string, LockMode> aliasedLockModes = new Dictionary<string, LockMode>();
169
169
Dictionary < string , string [ ] > keyColumnNames = dialect . ForUpdateOfColumns ? new Dictionary < string , string [ ] > ( ) : null ;
170
170
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 )
172
174
{
173
- LockMode lockMode ;
174
- if ( lockModes . TryGetValue ( drivingSqlAliases [ i ] , out lockMode ) )
175
+ for ( int i = 0 ; i < drivingSqlAliases . Length ; i ++ )
175
176
{
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 ) )
180
179
{
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
+ }
182
187
}
183
188
}
184
189
}
0 commit comments