public override async Task CloseAsync() #endif { if (!IsClosed) { _isClosed = true; if (_command != null && !_command.IsDisposed) { if (_command.CommandType == CommandType.StoredProcedure) { await _command.SetOutputParametersAsync(CancellationToken.None).ConfigureAwait(false); } if (_command.HasImplicitTransaction) { await _command.CommitImplicitTransactionAsync(CancellationToken.None).ConfigureAwait(false); } _command.ActiveReader = null; } if (_connection != null && IsCommandBehavior(CommandBehavior.CloseConnection)) { await _connection.CloseAsync().ConfigureAwait(false); } _position = StartPosition; _command = null; _connection = null; _row = null; _schemaTable = null; _fields = null; } }