@@ -109,50 +109,59 @@ private void SetParameters(IDbCommand command)
109109
110110 private static IEnumerable < IDbDataParameter > CreateParameterComplex ( ParameterTemplate template , object value , IDbCommand command )
111111 {
112- var str = value as string ;
113- if ( str != null )
112+ if ( template . DbType == DbType . Binary )
114113 {
115114 yield return CreateSingleParameter ( value , command , template . Name , template . DbType ) ;
116115 }
117116 else
118117 {
119- var range = value as IRange ;
120- if ( range != null )
118+ var str = value as string ;
119+ if ( str != null )
121120 {
122- yield return CreateSingleParameter ( range . Start , command , template . Name + "_start" , template . DbType ) ;
123- yield return CreateSingleParameter ( range . End , command , template . Name + "_end" , template . DbType ) ;
124- SetBetweenInCommandText ( command , template . Name ) ;
121+ yield return CreateSingleParameter ( value , command , template . Name , template . DbType ) ;
125122 }
126123 else
127124 {
128- var list = value as IEnumerable ;
129- if ( list != null )
125+ var range = value as IRange ;
126+ if ( range != null )
130127 {
131- var builder = new StringBuilder ( ) ;
132- var array = list . Cast < object > ( ) . ToArray ( ) ;
133- for ( int i = 0 ; i < array . Length ; i ++ )
134- {
135- builder . AppendFormat ( ",{0}_{1}" , template . Name , i ) ;
136- yield return
137- CreateSingleParameter ( array [ i ] , command , template . Name + "_" + i , template . DbType ) ;
138- }
139- if ( command . CommandText . Contains ( " != " + template . Name ) )
128+ yield return
129+ CreateSingleParameter ( range . Start , command , template . Name + "_start" , template . DbType ) ;
130+ yield return CreateSingleParameter ( range . End , command , template . Name + "_end" , template . DbType ) ;
131+ SetBetweenInCommandText ( command , template . Name ) ;
132+ }
133+ else
134+ {
135+ var list = value as IEnumerable ;
136+ if ( list != null )
140137 {
141- command . CommandText = command . CommandText . Replace ( "!= " + template . Name ,
142- "NOT IN (" +
143- builder . ToString ( ) . Substring ( 1 ) + ")" ) ;
138+ var builder = new StringBuilder ( ) ;
139+ var array = list . Cast < object > ( ) . ToArray ( ) ;
140+ for ( int i = 0 ; i < array . Length ; i ++ )
141+ {
142+ builder . AppendFormat ( ",{0}_{1}" , template . Name , i ) ;
143+ yield return
144+ CreateSingleParameter ( array [ i ] , command , template . Name + "_" + i , template . DbType ) ;
145+ }
146+ if ( command . CommandText . Contains ( "!= " + template . Name ) )
147+ {
148+ command . CommandText = command . CommandText . Replace ( "!= " + template . Name ,
149+ "NOT IN (" +
150+ builder . ToString ( ) . Substring ( 1 ) + ")" ) ;
151+ }
152+ else
153+ {
154+ command . CommandText = command . CommandText . Replace ( "= " + template . Name ,
155+ "IN (" +
156+ builder . ToString ( ) . Substring ( 1 ) +
157+ ")" ) ;
158+ }
144159 }
145160 else
146161 {
147- command . CommandText = command . CommandText . Replace ( "= " + template . Name ,
148- "IN (" + builder . ToString ( ) . Substring ( 1 ) +
149- ")" ) ;
162+ yield return CreateSingleParameter ( value , command , template . Name , template . DbType ) ;
150163 }
151164 }
152- else
153- {
154- yield return CreateSingleParameter ( value , command , template . Name , template . DbType ) ;
155- }
156165 }
157166 }
158167 }
0 commit comments