@@ -315,7 +315,7 @@ internal static async Task<IEnumerable<dynamic>> ExecuteQueryAsyncInternal(this
315315 }
316316
317317 // Execute the actual method
318- using ( var command = CreateDbCommandForExecution ( connection : connection ,
318+ using ( var command = await CreateDbCommandForExecutionAsync ( connection : connection ,
319319 commandText : commandText ,
320320 param : param ,
321321 commandType : commandType ,
@@ -836,7 +836,7 @@ private static async Task<IEnumerable<TResult>> ExecuteQueryAsyncInternalForType
836836 }
837837
838838 // Execute the actual method
839- using ( var command = CreateDbCommandForExecution ( connection : connection ,
839+ using ( var command = await CreateDbCommandForExecutionAsync ( connection : connection ,
840840 commandText : commandText ,
841841 param : param ,
842842 commandType : commandType ,
@@ -1088,7 +1088,7 @@ internal static async Task<IDataReader> ExecuteReaderAsyncInternal(this IDbConne
10881088 {
10891089 // Variables
10901090 var setting = connection . GetDbSetting ( ) ;
1091- var command = CreateDbCommandForExecution ( connection : connection ,
1091+ var command = await CreateDbCommandForExecutionAsync ( connection : connection ,
10921092 commandText : commandText ,
10931093 param : param ,
10941094 commandType : commandType ,
@@ -1244,7 +1244,7 @@ internal static async Task<int> ExecuteNonQueryAsyncInternal(this IDbConnection
12441244 IDbTransaction transaction ,
12451245 bool skipCommandArrayParametersCheck )
12461246 {
1247- using ( var command = CreateDbCommandForExecution ( connection : connection ,
1247+ using ( var command = await CreateDbCommandForExecutionAsync ( connection : connection ,
12481248 commandText : commandText ,
12491249 param : param ,
12501250 commandType : commandType ,
@@ -1384,7 +1384,7 @@ internal static async Task<object> ExecuteScalarAsyncInternal(this IDbConnection
13841384 IDbTransaction transaction ,
13851385 bool skipCommandArrayParametersCheck )
13861386 {
1387- using ( var command = CreateDbCommandForExecution ( connection : connection ,
1387+ using ( var command = await CreateDbCommandForExecutionAsync ( connection : connection ,
13881388 commandText : commandText ,
13891389 param : param ,
13901390 commandType : commandType ,
@@ -1526,7 +1526,7 @@ internal static async Task<TResult> ExecuteScalarAsyncInternal<TResult>(this IDb
15261526 IDbTransaction transaction ,
15271527 bool skipCommandArrayParametersCheck )
15281528 {
1529- using ( var command = CreateDbCommandForExecution ( connection : connection ,
1529+ using ( var command = await CreateDbCommandForExecutionAsync ( connection : connection ,
15301530 commandText : commandText ,
15311531 param : param ,
15321532 commandType : commandType ,
@@ -2255,6 +2255,41 @@ internal static IEnumerable<Field> GetQualifiedFields<TEntity>(IEnumerable<Field
22552255 where TEntity : class =>
22562256 fields ?? ( typeof ( TEntity ) . IsClassType ( ) == false ? Field . Parse ( entity ) : FieldCache . Get < TEntity > ( ) ) ;
22572257
2258+ /// <summary>
2259+ ///
2260+ /// </summary>
2261+ /// <param name="commandText"></param>
2262+ /// <param name="parameterName"></param>
2263+ /// <param name="values"></param>
2264+ /// <param name="dbSetting"></param>
2265+ /// <returns></returns>
2266+ internal static string ToRawSqlWithArrayParams ( string commandText ,
2267+ string parameterName ,
2268+ IEnumerable < object > values ,
2269+ IDbSetting dbSetting )
2270+ {
2271+ // Check for the defined parameter
2272+ if ( commandText . IndexOf ( parameterName ) < 0 )
2273+ {
2274+ return commandText ;
2275+ }
2276+
2277+ // Return if there is no values
2278+ if ( values ? . Any ( ) != true )
2279+ {
2280+ return commandText ;
2281+ }
2282+
2283+ // Get the variables needed
2284+ var parameters = values . Select ( ( value , index ) =>
2285+ string . Concat ( parameterName , index ) . AsParameter ( dbSetting ) ) ;
2286+
2287+ // Replace the target parameter
2288+ return commandText . Replace ( parameterName . AsParameter ( dbSetting ) , parameters . Join ( ", " ) ) ;
2289+ }
2290+
2291+ #region CreateDbCommandForExecution
2292+
22582293 /// <summary>
22592294 ///
22602295 /// </summary>
@@ -2279,9 +2314,81 @@ internal static DbCommand CreateDbCommandForExecution(this IDbConnection connect
22792314 // Validate
22802315 ValidateTransactionConnectionObject ( connection , transaction ) ;
22812316
2317+ // Open
2318+ connection . EnsureOpen ( ) ;
2319+
2320+ // Call
2321+ return CreateDbCommandForExecutionInternal ( connection : connection ,
2322+ commandText : commandText ,
2323+ param : param ,
2324+ commandType : commandType ,
2325+ commandTimeout : commandTimeout ,
2326+ transaction : transaction ,
2327+ entityType : entityType ,
2328+ skipCommandArrayParametersCheck : skipCommandArrayParametersCheck ) ;
2329+ }
2330+
2331+ /// <summary>
2332+ ///
2333+ /// </summary>
2334+ /// <param name="connection"></param>
2335+ /// <param name="commandText"></param>
2336+ /// <param name="param"></param>
2337+ /// <param name="commandType"></param>
2338+ /// <param name="commandTimeout"></param>
2339+ /// <param name="transaction"></param>
2340+ /// <param name="entityType"></param>
2341+ /// <param name="skipCommandArrayParametersCheck"></param>
2342+ /// <returns></returns>
2343+ internal static async Task < DbCommand > CreateDbCommandForExecutionAsync ( this IDbConnection connection ,
2344+ string commandText ,
2345+ object param = null ,
2346+ CommandType ? commandType = null ,
2347+ int ? commandTimeout = null ,
2348+ IDbTransaction transaction = null ,
2349+ Type entityType = null ,
2350+ bool skipCommandArrayParametersCheck = true )
2351+ {
2352+ // Validate
2353+ ValidateTransactionConnectionObject ( connection , transaction ) ;
2354+
2355+ // Open
2356+ await connection . EnsureOpenAsync ( ) ;
2357+
2358+ // Call
2359+ return CreateDbCommandForExecutionInternal ( connection : connection ,
2360+ commandText : commandText ,
2361+ param : param ,
2362+ commandType : commandType ,
2363+ commandTimeout : commandTimeout ,
2364+ transaction : transaction ,
2365+ entityType : entityType ,
2366+ skipCommandArrayParametersCheck : skipCommandArrayParametersCheck ) ;
2367+ }
2368+
2369+ /// <summary>
2370+ ///
2371+ /// </summary>
2372+ /// <param name="connection"></param>
2373+ /// <param name="commandText"></param>
2374+ /// <param name="param"></param>
2375+ /// <param name="commandType"></param>
2376+ /// <param name="commandTimeout"></param>
2377+ /// <param name="transaction"></param>
2378+ /// <param name="entityType"></param>
2379+ /// <param name="skipCommandArrayParametersCheck"></param>
2380+ /// <returns></returns>
2381+ private static DbCommand CreateDbCommandForExecutionInternal ( this IDbConnection connection ,
2382+ string commandText ,
2383+ object param = null ,
2384+ CommandType ? commandType = null ,
2385+ int ? commandTimeout = null ,
2386+ IDbTransaction transaction = null ,
2387+ Type entityType = null ,
2388+ bool skipCommandArrayParametersCheck = true )
2389+ {
22822390 // Command
22832391 var command = connection
2284- . EnsureOpen ( )
22852392 . CreateCommand ( commandText , commandType , commandTimeout , transaction ) ;
22862393
22872394 // Func
@@ -2327,38 +2434,7 @@ internal static DbCommand CreateDbCommandForExecution(this IDbConnection connect
23272434 return ( DbCommand ) command ;
23282435 }
23292436
2330- /// <summary>
2331- ///
2332- /// </summary>
2333- /// <param name="commandText"></param>
2334- /// <param name="parameterName"></param>
2335- /// <param name="values"></param>
2336- /// <param name="dbSetting"></param>
2337- /// <returns></returns>
2338- internal static string ToRawSqlWithArrayParams ( string commandText ,
2339- string parameterName ,
2340- IEnumerable < object > values ,
2341- IDbSetting dbSetting )
2342- {
2343- // Check for the defined parameter
2344- if ( commandText . IndexOf ( parameterName ) < 0 )
2345- {
2346- return commandText ;
2347- }
2348-
2349- // Return if there is no values
2350- if ( values ? . Any ( ) != true )
2351- {
2352- return commandText ;
2353- }
2354-
2355- // Get the variables needed
2356- var parameters = values . Select ( ( value , index ) =>
2357- string . Concat ( parameterName , index ) . AsParameter ( dbSetting ) ) ;
2358-
2359- // Replace the target parameter
2360- return commandText . Replace ( parameterName . AsParameter ( dbSetting ) , parameters . Join ( ", " ) ) ;
2361- }
2437+ #endregion
23622438
23632439 #region GetCommandArrayParameters
23642440
0 commit comments