提交 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()
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]
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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册