@@ -136,7 +136,7 @@ private DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
136
136
#endif
137
137
{
138
138
( ( ICancellableCommand ) this ) . ResetCommandTimeout ( ) ;
139
- return ExecuteReaderAsync ( IOBehavior . Synchronous , CancellationToken . None ) . GetAwaiter ( ) . GetResult ( ) ;
139
+ return ExecuteReaderAsync ( behavior , IOBehavior . Synchronous , CancellationToken . None ) . GetAwaiter ( ) . GetResult ( ) ;
140
140
}
141
141
142
142
#if NET6_0_OR_GREATER
@@ -147,21 +147,22 @@ private async Task<DbDataReader> ExecuteDbDataReaderAsync(CommandBehavior behavi
147
147
{
148
148
( ( ICancellableCommand ) this ) . ResetCommandTimeout ( ) ;
149
149
using var registration = ( ( ICancellableCommand ) this ) . RegisterCancel ( cancellationToken ) ;
150
- return await ExecuteReaderAsync ( AsyncIOBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
150
+ return await ExecuteReaderAsync ( behavior , AsyncIOBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
151
151
}
152
152
153
- private Task < MySqlDataReader > ExecuteReaderAsync ( IOBehavior ioBehavior , CancellationToken cancellationToken )
153
+ private Task < MySqlDataReader > ExecuteReaderAsync ( CommandBehavior behavior , IOBehavior ioBehavior , CancellationToken cancellationToken )
154
154
{
155
155
if ( ! IsValid ( out var exception ) )
156
156
return Utility . TaskFromException < MySqlDataReader > ( exception ) ;
157
157
158
+ CurrentCommandBehavior = behavior ;
158
159
foreach ( MySqlBatchCommand batchCommand in BatchCommands )
159
160
batchCommand . Batch = this ;
160
161
161
162
var payloadCreator = Connection ! . Session . SupportsComMulti ? BatchedCommandPayloadCreator . Instance :
162
163
IsPrepared ? SingleCommandPayloadCreator . Instance :
163
164
ConcatenatedCommandPayloadCreator . Instance ;
164
- return CommandExecutor . ExecuteReaderAsync ( BatchCommands ! . Commands , payloadCreator , CommandBehavior . Default , ioBehavior , cancellationToken ) ;
165
+ return CommandExecutor . ExecuteReaderAsync ( BatchCommands ! . Commands , payloadCreator , behavior , ioBehavior , cancellationToken ) ;
165
166
}
166
167
167
168
#if NET6_0_OR_GREATER
@@ -241,6 +242,8 @@ public void Dispose()
241
242
m_isDisposed = true ;
242
243
}
243
244
245
+ internal CommandBehavior CurrentCommandBehavior { get ; set ; }
246
+
244
247
int ICancellableCommand . CommandId => m_commandId ;
245
248
int ICancellableCommand . CommandTimeout => Timeout ;
246
249
int ICancellableCommand . CancelAttemptCount { get ; set ; }
@@ -280,7 +283,7 @@ private async Task<int> ExecuteNonQueryAsync(IOBehavior ioBehavior, Cancellation
280
283
{
281
284
( ( ICancellableCommand ) this ) . ResetCommandTimeout ( ) ;
282
285
using var registration = ( ( ICancellableCommand ) this ) . RegisterCancel ( cancellationToken ) ;
283
- using var reader = await ExecuteReaderAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
286
+ using var reader = await ExecuteReaderAsync ( CommandBehavior . Default , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
284
287
do
285
288
{
286
289
while ( await reader . ReadAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) )
@@ -296,7 +299,7 @@ private async Task<int> ExecuteNonQueryAsync(IOBehavior ioBehavior, Cancellation
296
299
using var registration = ( ( ICancellableCommand ) this ) . RegisterCancel ( cancellationToken ) ;
297
300
var hasSetResult = false ;
298
301
object ? result = null ;
299
- using var reader = await ExecuteReaderAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
302
+ using var reader = await ExecuteReaderAsync ( CommandBehavior . Default , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
300
303
do
301
304
{
302
305
var hasResult = await reader . ReadAsync ( ioBehavior , cancellationToken ) . ConfigureAwait ( false ) ;
0 commit comments