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 @@ -330,6 +330,19 @@ public void Dispose()
330330 {
331331 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
332332 _dataReader . Dispose ( ) ;
333+
334+ if ( _resultCoordinator != null )
335+ {
336+ foreach ( var dataReader in _resultCoordinator . DataReaders )
337+ {
338+ dataReader ? . DataReader . Dispose ( ) ;
339+ }
340+
341+ _resultCoordinator . DataReaders . Clear ( ) ;
342+
343+ _resultCoordinator = null ;
344+ }
345+
333346 _dataReader = null ;
334347 _dbDataReader = null ;
335348 }
@@ -503,20 +516,30 @@ private static async Task<bool> InitializeReaderAsync(AsyncEnumerator enumerator
503516 return false ;
504517 }
505518
506- public ValueTask DisposeAsync ( )
519+ public async ValueTask DisposeAsync ( )
507520 {
508- if ( _dataReader is not null )
521+ if ( _dataReader != null )
509522 {
510523 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
524+ await _dataReader . DisposeAsync ( ) . ConfigureAwait ( false ) ;
525+
526+ if ( _resultCoordinator != null )
527+ {
528+ foreach ( var dataReader in _resultCoordinator . DataReaders )
529+ {
530+ if ( dataReader != null )
531+ {
532+ await dataReader . DataReader . DisposeAsync ( ) . ConfigureAwait ( false ) ;
533+ }
534+ }
535+
536+ _resultCoordinator . DataReaders . Clear ( ) ;
537+ _resultCoordinator = null ;
538+ }
511539
512- var dataReader = _dataReader ;
513540 _dataReader = null ;
514541 _dbDataReader = null ;
515-
516- return dataReader . DisposeAsync ( ) ;
517542 }
518-
519- return default ;
520543 }
521544 }
522545}
Original file line number Diff line number Diff line change @@ -251,6 +251,7 @@ public void Dispose()
251251 {
252252 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
253253 _dataReader . Dispose ( ) ;
254+
254255 if ( _resultCoordinator != null )
255256 {
256257 foreach ( var dataReader in _resultCoordinator . DataReaders )
@@ -407,6 +408,7 @@ public async ValueTask DisposeAsync()
407408 {
408409 _relationalQueryContext . Connection . ReturnCommand ( _relationalCommand ! ) ;
409410 await _dataReader . DisposeAsync ( ) . ConfigureAwait ( false ) ;
411+
410412 if ( _resultCoordinator != null )
411413 {
412414 foreach ( var dataReader in _resultCoordinator . DataReaders )
You can’t perform that action at this time.
0 commit comments