@@ -100,7 +100,8 @@ public override MongoCollectionSettings Settings
100100 // public methods
101101 public override IAsyncCursor < TResult > Aggregate < TResult > ( PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
102102 {
103- return UsingImplicitSession ( session => Aggregate ( session , pipeline , options , cancellationToken ) , cancellationToken ) ;
103+ using var session = OperationExecutor . StartImplicitSession ( cancellationToken ) ;
104+ return Aggregate ( session , pipeline , options , cancellationToken ) ;
104105 }
105106
106107 public override IAsyncCursor < TResult > Aggregate < TResult > ( IClientSessionHandle session , PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
@@ -124,9 +125,10 @@ public override IAsyncCursor<TResult> Aggregate<TResult>(IClientSessionHandle se
124125 }
125126 }
126127
127- public override Task < IAsyncCursor < TResult > > AggregateAsync < TResult > ( PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
128+ public override async Task < IAsyncCursor < TResult > > AggregateAsync < TResult > ( PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
128129 {
129- return UsingImplicitSessionAsync ( session => AggregateAsync ( session , pipeline , options , cancellationToken ) , cancellationToken ) ;
130+ using var session = await OperationExecutor . StartImplicitSessionAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
131+ return await AggregateAsync ( session , pipeline , options , cancellationToken ) . ConfigureAwait ( false ) ;
130132 }
131133
132134 public override async Task < IAsyncCursor < TResult > > AggregateAsync < TResult > ( IClientSessionHandle session , PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
@@ -152,7 +154,8 @@ public override async Task<IAsyncCursor<TResult>> AggregateAsync<TResult>(IClien
152154
153155 public override void AggregateToCollection < TResult > ( PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
154156 {
155- UsingImplicitSession ( session => AggregateToCollection ( session , pipeline , options , cancellationToken ) , cancellationToken ) ;
157+ using var session = OperationExecutor . StartImplicitSession ( cancellationToken ) ;
158+ AggregateToCollection ( session , pipeline , options , cancellationToken ) ;
156159 }
157160
158161 public override void AggregateToCollection < TResult > ( IClientSessionHandle session , PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
@@ -172,9 +175,10 @@ public override void AggregateToCollection<TResult>(IClientSessionHandle session
172175 OperationExecutor . ExecuteWriteOperation ( aggregateOperation , _writeOperationOptions , session , cancellationToken ) ;
173176 }
174177
175- public override Task AggregateToCollectionAsync < TResult > ( PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
178+ public override async Task AggregateToCollectionAsync < TResult > ( PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
176179 {
177- return UsingImplicitSessionAsync ( session => AggregateToCollectionAsync ( session , pipeline , options , cancellationToken ) , cancellationToken ) ;
180+ using var session = await OperationExecutor . StartImplicitSessionAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
181+ await AggregateToCollectionAsync ( session , pipeline , options , cancellationToken ) . ConfigureAwait ( false ) ;
178182 }
179183
180184 public override async Task AggregateToCollectionAsync < TResult > ( IClientSessionHandle session , PipelineDefinition < TDocument , TResult > pipeline , AggregateOptions options , CancellationToken cancellationToken = default )
@@ -467,7 +471,8 @@ public override Task<TProjection> FindOneAndUpdateAsync<TProjection>(IClientSess
467471 [ Obsolete ( "Use Aggregation pipeline instead." ) ]
468472 public override IAsyncCursor < TResult > MapReduce < TResult > ( BsonJavaScript map , BsonJavaScript reduce , MapReduceOptions < TDocument , TResult > options = null , CancellationToken cancellationToken = default )
469473 {
470- return UsingImplicitSession ( session => MapReduce ( session , map , reduce , options , cancellationToken ) , cancellationToken ) ;
474+ using var session = OperationExecutor . StartImplicitSession ( cancellationToken ) ;
475+ return MapReduce ( session , map , reduce , options , cancellationToken ) ;
471476 }
472477
473478 [ Obsolete ( "Use Aggregation pipeline instead." ) ]
@@ -496,9 +501,10 @@ public override IAsyncCursor<TResult> MapReduce<TResult>(IClientSessionHandle se
496501 }
497502
498503 [ Obsolete ( "Use Aggregation pipeline instead." ) ]
499- public override Task < IAsyncCursor < TResult > > MapReduceAsync < TResult > ( BsonJavaScript map , BsonJavaScript reduce , MapReduceOptions < TDocument , TResult > options = null , CancellationToken cancellationToken = default )
504+ public override async Task < IAsyncCursor < TResult > > MapReduceAsync < TResult > ( BsonJavaScript map , BsonJavaScript reduce , MapReduceOptions < TDocument , TResult > options = null , CancellationToken cancellationToken = default )
500505 {
501- return UsingImplicitSessionAsync ( session => MapReduceAsync ( session , map , reduce , options , cancellationToken ) , cancellationToken ) ;
506+ using var session = await OperationExecutor . StartImplicitSessionAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
507+ return await MapReduceAsync ( session , map , reduce , options , cancellationToken ) . ConfigureAwait ( false ) ;
502508 }
503509
504510 [ Obsolete ( "Use Aggregation pipeline instead." ) ]
@@ -1266,38 +1272,6 @@ private IBsonSerializer<TResult> ResolveResultSerializer<TResult>(IBsonSerialize
12661272 return _settings . SerializerRegistry . GetSerializer < TResult > ( ) ;
12671273 }
12681274
1269- private void UsingImplicitSession ( Action < IClientSessionHandle > func , CancellationToken cancellationToken = default )
1270- {
1271- using ( var session = _operationExecutor . StartImplicitSession ( cancellationToken ) )
1272- {
1273- func ( session ) ;
1274- }
1275- }
1276-
1277- private TResult UsingImplicitSession < TResult > ( Func < IClientSessionHandle , TResult > func , CancellationToken cancellationToken = default )
1278- {
1279- using ( var session = _operationExecutor . StartImplicitSession ( cancellationToken ) )
1280- {
1281- return func ( session ) ;
1282- }
1283- }
1284-
1285- private async Task UsingImplicitSessionAsync ( Func < IClientSessionHandle , Task > funcAsync , CancellationToken cancellationToken = default )
1286- {
1287- using ( var session = await _operationExecutor . StartImplicitSessionAsync ( cancellationToken ) . ConfigureAwait ( false ) )
1288- {
1289- await funcAsync ( session ) . ConfigureAwait ( false ) ;
1290- }
1291- }
1292-
1293- private async Task < TResult > UsingImplicitSessionAsync < TResult > ( Func < IClientSessionHandle , Task < TResult > > funcAsync , CancellationToken cancellationToken = default )
1294- {
1295- using ( var session = await _operationExecutor . StartImplicitSessionAsync ( cancellationToken ) . ConfigureAwait ( false ) )
1296- {
1297- return await funcAsync ( session ) . ConfigureAwait ( false ) ;
1298- }
1299- }
1300-
13011275 // nested types
13021276 private class MongoIndexManager : MongoIndexManagerBase < TDocument >
13031277 {
0 commit comments