Commit 8bc2f8c1 authored by Nick Craver's avatar Nick Craver Committed by GitHub

Merge pull request #782 from jiabiao/master

AddDynamicParameters repeated should work  while paramtype is DbString 
parents 1f1e277d 02644d77
......@@ -1081,6 +1081,18 @@ public void Test_AddDynamicParametersRepeatedShouldWork()
Assert.Equal(123, i);
}
[Fact]
public void Test_AddDynamicParametersRepeatedIfParamTypeIsDbStiringShouldWork()
{
var foo = new DbString() { Value = "123" };
var args = new DynamicParameters();
args.AddDynamicParams(new { Foo = foo });
args.AddDynamicParams(new { Foo = foo });
int i = connection.Query<int>("select @Foo", args).Single();
i.IsEqualTo(123);
}
[Fact]
public void AllowIDictionaryParameters()
{
......
......@@ -55,8 +55,18 @@ public void AddParameter(IDbCommand command, string name)
{
throw new InvalidOperationException("If specifying IsFixedLength, a Length must also be specified");
}
var param = command.CreateParameter();
param.ParameterName = name;
bool add = !command.Parameters.Contains(name);
IDbDataParameter param;
if (add)
{
param = command.CreateParameter();
param.ParameterName = name;
}
else
{
param = (IDbDataParameter)command.Parameters[name];
}
#pragma warning disable 0618
param.Value = SqlMapper.SanitizeParameterValue(Value);
#pragma warning restore 0618
......@@ -69,7 +79,10 @@ public void AddParameter(IDbCommand command, string name)
param.Size = Length;
}
param.DbType = IsAnsi ? (IsFixedLength ? DbType.AnsiStringFixedLength : DbType.AnsiString) : (IsFixedLength ? DbType.StringFixedLength : DbType.String);
command.Parameters.Add(param);
if (add)
{
command.Parameters.Add(param);
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment