@@ -233,25 +233,26 @@ public override async Task ListAsync(IQueryExpression queryExpression, QueryPara
233
233
await ( AutoFlushIfRequiredAsync ( plan . QuerySpaces , cancellationToken ) ) . ConfigureAwait ( false ) ;
234
234
235
235
bool success = false ;
236
- dontFlushFromFind ++ ; //stops flush being called multiple times if this method is recursively called
237
- try
238
- {
239
- await ( plan . PerformListAsync ( queryParameters , this , results , cancellationToken ) ) . ConfigureAwait ( false ) ;
240
- success = true ;
241
- }
242
- catch ( HibernateException )
243
- {
244
- // Do not call Convert on HibernateExceptions
245
- throw ;
246
- }
247
- catch ( Exception e )
248
- {
249
- throw Convert ( e , "Could not execute query" ) ;
250
- }
251
- finally
236
+ using ( SuspendAutoFlush ( ) ) //stops flush being called multiple times if this method is recursively called
252
237
{
253
- dontFlushFromFind -- ;
254
- await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
238
+ try
239
+ {
240
+ await ( plan . PerformListAsync ( queryParameters , this , results , cancellationToken ) ) . ConfigureAwait ( false ) ;
241
+ success = true ;
242
+ }
243
+ catch ( HibernateException )
244
+ {
245
+ // Do not call Convert on HibernateExceptions
246
+ throw ;
247
+ }
248
+ catch ( Exception e )
249
+ {
250
+ throw Convert ( e , "Could not execute query" ) ;
251
+ }
252
+ finally
253
+ {
254
+ await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
255
+ }
255
256
}
256
257
}
257
258
}
@@ -277,15 +278,10 @@ public override async Task<IEnumerable<T>> EnumerableAsync<T>(IQueryExpression q
277
278
var plan = GetHQLQueryPlan ( queryExpression , true ) ;
278
279
await ( AutoFlushIfRequiredAsync ( plan . QuerySpaces , cancellationToken ) ) . ConfigureAwait ( false ) ;
279
280
280
- dontFlushFromFind ++ ; //stops flush being called multiple times if this method is recursively called
281
- try
281
+ using ( SuspendAutoFlush ( ) ) //stops flush being called multiple times if this method is recursively called
282
282
{
283
283
return await ( plan . PerformIterateAsync < T > ( queryParameters , this , cancellationToken ) ) . ConfigureAwait ( false ) ;
284
284
}
285
- finally
286
- {
287
- dontFlushFromFind -- ;
288
- }
289
285
}
290
286
}
291
287
@@ -299,15 +295,10 @@ public override async Task<IEnumerable> EnumerableAsync(IQueryExpression queryEx
299
295
var plan = GetHQLQueryPlan ( queryExpression , true ) ;
300
296
await ( AutoFlushIfRequiredAsync ( plan . QuerySpaces , cancellationToken ) ) . ConfigureAwait ( false ) ;
301
297
302
- dontFlushFromFind ++ ; //stops flush being called multiple times if this method is recursively called
303
- try
298
+ using ( SuspendAutoFlush ( ) ) //stops flush being called multiple times if this method is recursively called
304
299
{
305
300
return await ( plan . PerformIterateAsync ( queryParameters , this , cancellationToken ) ) . ConfigureAwait ( false ) ;
306
301
}
307
- finally
308
- {
309
- dontFlushFromFind -- ;
310
- }
311
302
}
312
303
}
313
304
@@ -961,19 +952,14 @@ public override async Task<object> InternalLoadAsync(string entityName, object i
961
952
{
962
953
throw new HibernateException ( "Flush during cascade is dangerous" ) ;
963
954
}
964
- dontFlushFromFind ++ ;
965
- try
955
+ using ( SuspendAutoFlush ( ) )
966
956
{
967
957
IFlushEventListener [ ] flushEventListener = listeners . FlushEventListeners ;
968
958
for ( int i = 0 ; i < flushEventListener . Length ; i ++ )
969
959
{
970
960
await ( flushEventListener [ i ] . OnFlushAsync ( new FlushEvent ( this ) , cancellationToken ) ) . ConfigureAwait ( false ) ;
971
961
}
972
962
}
973
- finally
974
- {
975
- dontFlushFromFind -- ;
976
- }
977
963
}
978
964
}
979
965
@@ -1032,25 +1018,26 @@ private async Task FilterAsync(object collection, string filter, QueryParameters
1032
1018
FilterQueryPlan plan = await ( GetFilterQueryPlanAsync ( collection , filter , queryParameters , false , cancellationToken ) ) . ConfigureAwait ( false ) ;
1033
1019
1034
1020
bool success = false ;
1035
- dontFlushFromFind ++ ; //stops flush being called multiple times if this method is recursively called
1036
- try
1037
- {
1038
- await ( plan . PerformListAsync ( queryParameters , this , results , cancellationToken ) ) . ConfigureAwait ( false ) ;
1039
- success = true ;
1040
- }
1041
- catch ( HibernateException )
1042
- {
1043
- // Do not call Convert on HibernateExceptions
1044
- throw ;
1045
- }
1046
- catch ( Exception e )
1047
- {
1048
- throw Convert ( e , "could not execute query" ) ;
1049
- }
1050
- finally
1021
+ using ( SuspendAutoFlush ( ) ) //stops flush being called multiple times if this method is recursively called
1051
1022
{
1052
- dontFlushFromFind -- ;
1053
- await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
1023
+ try
1024
+ {
1025
+ await ( plan . PerformListAsync ( queryParameters , this , results , cancellationToken ) ) . ConfigureAwait ( false ) ;
1026
+ success = true ;
1027
+ }
1028
+ catch ( HibernateException )
1029
+ {
1030
+ // Do not call Convert on HibernateExceptions
1031
+ throw ;
1032
+ }
1033
+ catch ( Exception e )
1034
+ {
1035
+ throw Convert ( e , "could not execute query" ) ;
1036
+ }
1037
+ finally
1038
+ {
1039
+ await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
1040
+ }
1054
1041
}
1055
1042
}
1056
1043
}
@@ -1127,30 +1114,30 @@ public override async Task ListAsync(CriteriaImpl criteria, IList results, Cance
1127
1114
1128
1115
await ( AutoFlushIfRequiredAsync ( spaces , cancellationToken ) ) . ConfigureAwait ( false ) ;
1129
1116
1130
- dontFlushFromFind ++ ;
1131
-
1132
1117
bool success = false ;
1133
- try
1118
+ using ( SuspendAutoFlush ( ) )
1134
1119
{
1135
- for ( int i = size - 1 ; i >= 0 ; i -- )
1120
+ try
1136
1121
{
1137
- ArrayHelper . AddAll ( results , await ( loaders [ i ] . ListAsync ( this , cancellationToken ) ) . ConfigureAwait ( false ) ) ;
1122
+ for ( int i = size - 1 ; i >= 0 ; i -- )
1123
+ {
1124
+ ArrayHelper . AddAll ( results , await ( loaders [ i ] . ListAsync ( this , cancellationToken ) ) . ConfigureAwait ( false ) ) ;
1125
+ }
1126
+ success = true ;
1127
+ }
1128
+ catch ( HibernateException )
1129
+ {
1130
+ // Do not call Convert on HibernateExceptions
1131
+ throw ;
1132
+ }
1133
+ catch ( Exception sqle )
1134
+ {
1135
+ throw Convert ( sqle , "Unable to perform find" ) ;
1136
+ }
1137
+ finally
1138
+ {
1139
+ await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
1138
1140
}
1139
- success = true ;
1140
- }
1141
- catch ( HibernateException )
1142
- {
1143
- // Do not call Convert on HibernateExceptions
1144
- throw ;
1145
- }
1146
- catch ( Exception sqle )
1147
- {
1148
- throw Convert ( sqle , "Unable to perform find" ) ;
1149
- }
1150
- finally
1151
- {
1152
- dontFlushFromFind -- ;
1153
- await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
1154
1141
}
1155
1142
}
1156
1143
}
@@ -1181,16 +1168,17 @@ public override async Task ListCustomQueryAsync(ICustomQuery customQuery, QueryP
1181
1168
await ( AutoFlushIfRequiredAsync ( loader . QuerySpaces , cancellationToken ) ) . ConfigureAwait ( false ) ;
1182
1169
1183
1170
bool success = false ;
1184
- dontFlushFromFind ++ ;
1185
- try
1186
- {
1187
- ArrayHelper . AddAll ( results , await ( loader . ListAsync ( this , queryParameters , cancellationToken ) ) . ConfigureAwait ( false ) ) ;
1188
- success = true ;
1189
- }
1190
- finally
1171
+ using ( SuspendAutoFlush ( ) )
1191
1172
{
1192
- dontFlushFromFind -- ;
1193
- await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
1173
+ try
1174
+ {
1175
+ ArrayHelper . AddAll ( results , await ( loader . ListAsync ( this , queryParameters , cancellationToken ) ) . ConfigureAwait ( false ) ) ;
1176
+ success = true ;
1177
+ }
1178
+ finally
1179
+ {
1180
+ await ( AfterOperationAsync ( success , cancellationToken ) ) . ConfigureAwait ( false ) ;
1181
+ }
1194
1182
}
1195
1183
}
1196
1184
}
0 commit comments