Skip to content

Commit

Permalink
Release 0.6.3
Browse files Browse the repository at this point in the history
  • Loading branch information
markrendle committed May 16, 2011
1 parent 9a31683 commit 2880429
Show file tree
Hide file tree
Showing 32 changed files with 989 additions and 921 deletions.
65 changes: 37 additions & 28 deletions Simple.Data.Ado/CommandBuilder.cs
Expand Up @@ -109,50 +109,59 @@ private void SetParameters(IDbCommand command)


private static IEnumerable<IDbDataParameter> CreateParameterComplex(ParameterTemplate template, object value, IDbCommand command) private static IEnumerable<IDbDataParameter> CreateParameterComplex(ParameterTemplate template, object value, IDbCommand command)
{ {
var str = value as string; if (template.DbType == DbType.Binary)
if (str != null)
{ {
yield return CreateSingleParameter(value, command, template.Name, template.DbType); yield return CreateSingleParameter(value, command, template.Name, template.DbType);
} }
else else
{ {
var range = value as IRange; var str = value as string;
if (range != null) if (str != null)
{ {
yield return CreateSingleParameter(range.Start, command, template.Name + "_start", template.DbType); yield return CreateSingleParameter(value, command, template.Name, template.DbType);
yield return CreateSingleParameter(range.End, command, template.Name + "_end", template.DbType);
SetBetweenInCommandText(command, template.Name);
} }
else else
{ {
var list = value as IEnumerable; var range = value as IRange;
if (list != null) if (range != null)
{ {
var builder = new StringBuilder(); yield return
var array = list.Cast<object>().ToArray(); CreateSingleParameter(range.Start, command, template.Name + "_start", template.DbType);
for (int i = 0; i < array.Length; i++) yield return CreateSingleParameter(range.End, command, template.Name + "_end", template.DbType);
{ SetBetweenInCommandText(command, template.Name);
builder.AppendFormat(",{0}_{1}", template.Name, i); }
yield return else
CreateSingleParameter(array[i], command, template.Name + "_" + i, template.DbType); {
} var list = value as IEnumerable;
if (command.CommandText.Contains("!= " + template.Name)) if (list != null)
{ {
command.CommandText = command.CommandText.Replace("!= " + template.Name, var builder = new StringBuilder();
"NOT IN (" + var array = list.Cast<object>().ToArray();
builder.ToString().Substring(1) + ")"); for (int i = 0; i < array.Length; i++)
{
builder.AppendFormat(",{0}_{1}", template.Name, i);
yield return
CreateSingleParameter(array[i], command, template.Name + "_" + i, template.DbType);
}
if (command.CommandText.Contains("!= " + template.Name))
{
command.CommandText = command.CommandText.Replace("!= " + template.Name,
"NOT IN (" +
builder.ToString().Substring(1) + ")");
}
else
{
command.CommandText = command.CommandText.Replace("= " + template.Name,
"IN (" +
builder.ToString().Substring(1) +
")");
}
} }
else else
{ {
command.CommandText = command.CommandText.Replace("= " + template.Name, yield return CreateSingleParameter(value, command, template.Name, template.DbType);
"IN (" + builder.ToString().Substring(1) +
")");
} }
} }
else
{
yield return CreateSingleParameter(value, command, template.Name, template.DbType);
}
} }
} }
} }
Expand Down
64 changes: 36 additions & 28 deletions Simple.Data.Ado/CommandTemplate.cs
Expand Up @@ -46,50 +46,58 @@ private IEnumerable<IDbDataParameter> CreateParameters(IDbCommand command, IEnum


private static IEnumerable<IDbDataParameter> CreateParameters(IDbCommand command, ParameterTemplate parameterTemplate, object value) private static IEnumerable<IDbDataParameter> CreateParameters(IDbCommand command, ParameterTemplate parameterTemplate, object value)
{ {
var str = value as string; if (parameterTemplate.DbType == DbType.Binary)
if (str != null)
{ {
yield return CreateParameter(command, parameterTemplate, value); yield return CreateParameter(command, parameterTemplate, value);
} }
else else
{ {
var range = value as IRange; var str = value as string;
if (range != null) if (str != null)
{ {
yield return CreateParameter(command, parameterTemplate, range.Start, "_start"); yield return CreateParameter(command, parameterTemplate, value);
yield return CreateParameter(command, parameterTemplate, range.End, "_end");
CommandBuilder.SetBetweenInCommandText(command, parameterTemplate.Name);
} }
else else
{ {
var list = value as IEnumerable; var range = value as IRange;
if (list != null) if (range != null)
{ {
var builder = new StringBuilder(); yield return CreateParameter(command, parameterTemplate, range.Start, "_start");
var array = list.Cast<object>().ToArray(); yield return CreateParameter(command, parameterTemplate, range.End, "_end");
for (int i = 0; i < array.Length; i++) CommandBuilder.SetBetweenInCommandText(command, parameterTemplate.Name);
{ }
builder.AppendFormat(",{0}_{1}", parameterTemplate.Name, i); else
yield return CreateParameter(command, parameterTemplate, array[i], "_" + i); {
} var list = value as IEnumerable;
if (command.CommandText.Contains("!= " + parameterTemplate.Name)) if (list != null)
{ {
command.CommandText = command.CommandText.Replace("!= " + parameterTemplate.Name, var builder = new StringBuilder();
"NOT IN (" + var array = list.Cast<object>().ToArray();
builder.ToString().Substring(1) + for (int i = 0; i < array.Length; i++)
")"); {
builder.AppendFormat(",{0}_{1}", parameterTemplate.Name, i);
yield return CreateParameter(command, parameterTemplate, array[i], "_" + i);
}
if (command.CommandText.Contains("!= " + parameterTemplate.Name))
{
command.CommandText = command.CommandText.Replace("!= " + parameterTemplate.Name,
"NOT IN (" +
builder.ToString().Substring(1) +
")");
}
else
{
command.CommandText = command.CommandText.Replace("= " + parameterTemplate.Name,
"IN (" +
builder.ToString().Substring(1) +
")");
}
} }
else else
{ {
command.CommandText = command.CommandText.Replace("= " + parameterTemplate.Name, yield return CreateParameter(command, parameterTemplate, value);
"IN (" + builder.ToString().Substring(1) +
")");
} }
} }
else
{
yield return CreateParameter(command, parameterTemplate, value);
}
} }
} }
} }
Expand Down

0 comments on commit 2880429

Please sign in to comment.