File tree Expand file tree Collapse file tree 2 files changed +32
-7
lines changed
src/EFCore.Relational/Query/Internal Expand file tree Collapse file tree 2 files changed +32
-7
lines changed Original file line number Diff line number Diff line change @@ -360,6 +360,19 @@ public void Dispose()
360360 {
361361 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
362362 _dataReader . Dispose ( ) ;
363+
364+ if ( _resultCoordinator != null )
365+ {
366+ foreach ( var dataReader in _resultCoordinator . DataReaders )
367+ {
368+ dataReader ? . DataReader . Dispose ( ) ;
369+ }
370+
371+ _resultCoordinator . DataReaders . Clear ( ) ;
372+
373+ _resultCoordinator = null ;
374+ }
375+
363376 _dataReader = null ;
364377 _dbDataReader = null ;
365378 }
@@ -526,20 +539,30 @@ private static async Task<bool> InitializeReaderAsync(AsyncEnumerator enumerator
526539 return false ;
527540 }
528541
529- public ValueTask DisposeAsync ( )
542+ public async ValueTask DisposeAsync ( )
530543 {
531- if ( _dataReader is not null )
544+ if ( _dataReader != null )
532545 {
533546 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
547+ await _dataReader . DisposeAsync ( ) . ConfigureAwait ( false ) ;
548+
549+ if ( _resultCoordinator != null )
550+ {
551+ foreach ( var dataReader in _resultCoordinator . DataReaders )
552+ {
553+ if ( dataReader != null )
554+ {
555+ await dataReader . DataReader . DisposeAsync ( ) . ConfigureAwait ( false ) ;
556+ }
557+ }
558+
559+ _resultCoordinator . DataReaders . Clear ( ) ;
560+ _resultCoordinator = null ;
561+ }
534562
535- var dataReader = _dataReader ;
536563 _dataReader = null ;
537564 _dbDataReader = null ;
538-
539- return dataReader . DisposeAsync ( ) ;
540565 }
541-
542- return default ;
543566 }
544567 }
545568}
Original file line number Diff line number Diff line change @@ -281,6 +281,7 @@ public void Dispose()
281281 {
282282 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
283283 _dataReader . Dispose ( ) ;
284+
284285 if ( _resultCoordinator != null )
285286 {
286287 foreach ( var dataReader in _resultCoordinator . DataReaders )
@@ -430,6 +431,7 @@ public async ValueTask DisposeAsync()
430431 {
431432 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
432433 await _dataReader . DisposeAsync ( ) . ConfigureAwait ( false ) ;
434+
433435 if ( _resultCoordinator != null )
434436 {
435437 foreach ( var dataReader in _resultCoordinator . DataReaders )
You can’t perform that action at this time.
0 commit comments