Skip to content

Commit 2880429

Browse files
committed
Release 0.6.3
1 parent 9a31683 commit 2880429

32 files changed

+989
-921
lines changed

Simple.Data.Ado/CommandBuilder.cs

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

Simple.Data.Ado/CommandTemplate.cs

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -46,50 +46,58 @@ private IEnumerable<IDbDataParameter> CreateParameters(IDbCommand command, IEnum
4646

4747
private static IEnumerable<IDbDataParameter> CreateParameters(IDbCommand command, ParameterTemplate parameterTemplate, object value)
4848
{
49-
var str = value as string;
50-
if (str != null)
49+
if (parameterTemplate.DbType == DbType.Binary)
5150
{
5251
yield return CreateParameter(command, parameterTemplate, value);
5352
}
5453
else
5554
{
56-
var range = value as IRange;
57-
if (range != null)
55+
var str = value as string;
56+
if (str != null)
5857
{
59-
yield return CreateParameter(command, parameterTemplate, range.Start, "_start");
60-
yield return CreateParameter(command, parameterTemplate, range.End, "_end");
61-
CommandBuilder.SetBetweenInCommandText(command, parameterTemplate.Name);
58+
yield return CreateParameter(command, parameterTemplate, value);
6259
}
6360
else
6461
{
65-
var list = value as IEnumerable;
66-
if (list != null)
62+
var range = value as IRange;
63+
if (range != null)
6764
{
68-
var builder = new StringBuilder();
69-
var array = list.Cast<object>().ToArray();
70-
for (int i = 0; i < array.Length; i++)
71-
{
72-
builder.AppendFormat(",{0}_{1}", parameterTemplate.Name, i);
73-
yield return CreateParameter(command, parameterTemplate, array[i], "_" + i);
74-
}
75-
if (command.CommandText.Contains("!= " + parameterTemplate.Name))
65+
yield return CreateParameter(command, parameterTemplate, range.Start, "_start");
66+
yield return CreateParameter(command, parameterTemplate, range.End, "_end");
67+
CommandBuilder.SetBetweenInCommandText(command, parameterTemplate.Name);
68+
}
69+
else
70+
{
71+
var list = value as IEnumerable;
72+
if (list != null)
7673
{
77-
command.CommandText = command.CommandText.Replace("!= " + parameterTemplate.Name,
78-
"NOT IN (" +
79-
builder.ToString().Substring(1) +
80-
")");
74+
var builder = new StringBuilder();
75+
var array = list.Cast<object>().ToArray();
76+
for (int i = 0; i < array.Length; i++)
77+
{
78+
builder.AppendFormat(",{0}_{1}", parameterTemplate.Name, i);
79+
yield return CreateParameter(command, parameterTemplate, array[i], "_" + i);
80+
}
81+
if (command.CommandText.Contains("!= " + parameterTemplate.Name))
82+
{
83+
command.CommandText = command.CommandText.Replace("!= " + parameterTemplate.Name,
84+
"NOT IN (" +
85+
builder.ToString().Substring(1) +
86+
")");
87+
}
88+
else
89+
{
90+
command.CommandText = command.CommandText.Replace("= " + parameterTemplate.Name,
91+
"IN (" +
92+
builder.ToString().Substring(1) +
93+
")");
94+
}
8195
}
8296
else
8397
{
84-
command.CommandText = command.CommandText.Replace("= " + parameterTemplate.Name,
85-
"IN (" + builder.ToString().Substring(1) +
86-
")");
98+
yield return CreateParameter(command, parameterTemplate, value);
8799
}
88100
}
89-
else
90-
{
91-
yield return CreateParameter(command, parameterTemplate, value);
92-
}
93101
}
94102
}
95103
}
File renamed without changes.

0 commit comments

Comments
 (0)