@@ -231,7 +231,7 @@ public void RemoveUnusedCommandParameters(DbCommand cmd, SqlString sqlString)
231
231
. ForEach ( unusedParameterName => cmd . Parameters . RemoveAt ( unusedParameterName ) ) ;
232
232
}
233
233
234
- public virtual void ExpandQueryParameters ( DbCommand cmd , SqlString sqlString )
234
+ public virtual void ExpandQueryParameters ( DbCommand cmd , SqlString sqlString , SqlType [ ] parameterTypes )
235
235
{
236
236
if ( UseNamedPrefixInSql )
237
237
return ; // named parameters are ok
@@ -242,8 +242,10 @@ public virtual void ExpandQueryParameters(DbCommand cmd, SqlString sqlString)
242
242
var parameter = part as Parameter ;
243
243
if ( parameter != null )
244
244
{
245
- var originalParameter = cmd . Parameters [ parameter . ParameterPosition . Value ] ;
246
- expandedParameters . Add ( CloneParameter ( cmd , originalParameter ) ) ;
245
+ var index = parameter . ParameterPosition . Value ;
246
+ var originalParameter = cmd . Parameters [ index ] ;
247
+ var originalType = parameterTypes [ index ] ;
248
+ expandedParameters . Add ( CloneParameter ( cmd , originalParameter , originalType ) ) ;
247
249
}
248
250
}
249
251
@@ -262,11 +264,9 @@ public virtual bool SupportsMultipleQueries
262
264
get { return false ; }
263
265
}
264
266
265
- protected virtual DbParameter CloneParameter ( DbCommand cmd , DbParameter originalParameter )
267
+ protected virtual DbParameter CloneParameter ( DbCommand cmd , DbParameter originalParameter , SqlType originalType )
266
268
{
267
- var clone = cmd . CreateParameter ( ) ;
268
- clone . DbType = originalParameter . DbType ;
269
- clone . ParameterName = originalParameter . ParameterName ;
269
+ var clone = GenerateParameter ( cmd , originalParameter . ParameterName , originalType ) ;
270
270
clone . Value = originalParameter . Value ;
271
271
return clone ;
272
272
}
0 commit comments