提交 02644d77 编写于 作者: B Bill.B.Jia

fix issue #731: AddDynamicParameters repeated if paramtype is DbStiring should work.

上级 fb443385
...@@ -1020,6 +1020,18 @@ public void Test_AddDynamicParametersRepeatedShouldWork() ...@@ -1020,6 +1020,18 @@ public void Test_AddDynamicParametersRepeatedShouldWork()
i.IsEqualTo(123); i.IsEqualTo(123);
} }
[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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册