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() ...@@ -1081,6 +1081,18 @@ public void Test_AddDynamicParametersRepeatedShouldWork()
Assert.Equal(123, i); 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] [Fact]
public void AllowIDictionaryParameters() public void AllowIDictionaryParameters()
{ {
......
...@@ -55,8 +55,18 @@ public void AddParameter(IDbCommand command, string name) ...@@ -55,8 +55,18 @@ public void AddParameter(IDbCommand command, string name)
{ {
throw new InvalidOperationException("If specifying IsFixedLength, a Length must also be specified"); throw new InvalidOperationException("If specifying IsFixedLength, a Length must also be specified");
} }
var param = command.CreateParameter(); bool add = !command.Parameters.Contains(name);
param.ParameterName = name; IDbDataParameter param;
if (add)
{
param = command.CreateParameter();
param.ParameterName = name;
}
else
{
param = (IDbDataParameter)command.Parameters[name];
}
#pragma warning disable 0618 #pragma warning disable 0618
param.Value = SqlMapper.SanitizeParameterValue(Value); param.Value = SqlMapper.SanitizeParameterValue(Value);
#pragma warning restore 0618 #pragma warning restore 0618
...@@ -69,7 +79,10 @@ public void AddParameter(IDbCommand command, string name) ...@@ -69,7 +79,10 @@ public void AddParameter(IDbCommand command, string name)
param.Size = Length; param.Size = Length;
} }
param.DbType = IsAnsi ? (IsFixedLength ? DbType.AnsiStringFixedLength : DbType.AnsiString) : (IsFixedLength ? DbType.StringFixedLength : DbType.String); 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