我需要将参数传递给SQL语句,使用Firebird ADO一切正常,但是使用InterBase ADO会出现问题。 我的代码:
result = conn.Query<DestClass>(sqlCmd, new
{
stringParam = stringVal,
intParam1 = intVal1,
intParam2 = intVal2
}).Single();
我已经FormatException
了,但是当我使用DynamicParameters
定义参数并为stringParam设置DbType.AnsiString
时,SQL效果很好。但是当我需要传递字符串时,我的代码中有很多地方,而且我不想在所有地方更改它。
然后我发现我可以使用Dapper.SqlMapper.AddTypeMap(typeof(String), DbType.AnsiString);
但我不能。我有Common Language Runtime detected an invalid program.
如何解决此问题?
修改
看起来问题在Dapper v1.22中得到了解决。
答案 0 :(得分:3)
有人建议添加表单的程序集级别属性:
[assembly:SomeName(blah)]
将控制来自该程序集的所有类型的默认字符串类型。这可能会实现您所需要的大部分功能(尽管它会以另一种方式推动摆动,因此您需要告诉其他使用该怎么做)。我目前非常积极地黑客攻击,所以我希望这会在短期内实现。
请注意,您无需使用DynamicParameters
;你也可以使用:
stringParam = new DbString { Value = stringVal, IsAnsi = true }