@@ -231,7 +231,7 @@ public void RemoveUnusedCommandParameters(DbCommand cmd, SqlString sqlString)
231231 . ForEach ( unusedParameterName => cmd . Parameters . RemoveAt ( unusedParameterName ) ) ;
232232 }
233233
234- public virtual void ExpandQueryParameters ( DbCommand cmd , SqlString sqlString )
234+ public virtual void ExpandQueryParameters ( DbCommand cmd , SqlString sqlString , SqlType [ ] parameterTypes )
235235 {
236236 if ( UseNamedPrefixInSql )
237237 return ; // named parameters are ok
@@ -242,8 +242,10 @@ public virtual void ExpandQueryParameters(DbCommand cmd, SqlString sqlString)
242242 var parameter = part as Parameter ;
243243 if ( parameter != null )
244244 {
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 ) ) ;
247249 }
248250 }
249251
@@ -262,11 +264,9 @@ public virtual bool SupportsMultipleQueries
262264 get { return false ; }
263265 }
264266
265- protected virtual DbParameter CloneParameter ( DbCommand cmd , DbParameter originalParameter )
267+ protected virtual DbParameter CloneParameter ( DbCommand cmd , DbParameter originalParameter , SqlType originalType )
266268 {
267- var clone = cmd . CreateParameter ( ) ;
268- clone . DbType = originalParameter . DbType ;
269- clone . ParameterName = originalParameter . ParameterName ;
269+ var clone = GenerateParameter ( cmd , originalParameter . ParameterName , originalType ) ;
270270 clone . Value = originalParameter . Value ;
271271 return clone ;
272272 }
0 commit comments