可在小巧玲珑的DynamicParameters对象列举喜欢的参数字典? [英] Can a Dapper DynamicParameters object be enumerated like a dictionary of parameters?
问题描述
我知道我可以使用 ParameterDirection
与Dapper.DynamicParameters:
VAR参数=新DynamicParameters();
parameters.Add(IPARAM,42);
parameters.Add(oparam,空,DbType.Int32,ParameterDirection.Output);
connection.Execute(SQL参数);
但我这样做,用时词典<字符串对象>
VAR参数=新词典<字符串对象>();
parameters.Add(IPARAM,42);
parameters.Add(oparam,/ * ??? * /);
connection.Execute(SQL参数);
另外,请问有什么可以遍历 DynamicParameters
,以获取参数的名称和值
原标题:
可与ParameterDirection一个小巧玲珑的参数,使用
字典中添加?
块引用>
解决方案这似乎是在小巧玲珑的错误。这证实了最新的NuGet包工作:
的foreach(在parameters.ParameterNames VAR paramName配置)
$ { b $ b VAR值=((SqlMapper.IParameterLookup)参数)[paramName配置]
}
然而,这是一个有点冗长。在本地使用短小精悍源(不是的NuGet包),我是能够运行此代码没有错误(在截稿时说的提交 b77e53 ):
的foreach(在parameters.ParameterNames VAR paramName配置)
{
VAR值= parameters.Get<动态>(paramName配置) ;
}
据的查尔斯伯恩斯评论,它仍然抛出一个异常,这使我相信该补丁还没有把它做成的NuGet呢。提交它修正
获取LT;动态>
是的这里I know I can use a
ParameterDirection
with Dapper.DynamicParameters:var parameters = new DynamicParameters(); parameters.Add("iparam", 42); parameters.Add("oparam", null, DbType.Int32, ParameterDirection.Output); connection.Execute(sql, parameters);
But can I do so when using a
Dictionary<string, object>
?var parameters = new Dictionary<string, object>(); parameters.Add("iparam", 42); parameters.Add("oparam", /* ??? */ ); connection.Execute(sql, parameters);
Alternatively, how may I iterate over a
DynamicParameters
in order to get the parameter names and values?Original title:
Can a Dapper parameter with ParameterDirection be added using a dictionary?
解决方案It appears to be a bug in Dapper. This is confirmed to work in the latest NuGet package:
foreach (var paramName in parameters.ParameterNames) { var value = ((SqlMapper.IParameterLookup)parameters)[paramName]; }
However, it's a bit verbose. Locally using the Dapper source (not a NuGet package), I was able to run this code without error (As of writing that's commit b77e53):
foreach (var paramName in parameters.ParameterNames) { var value = parameters.Get<dynamic>(paramName); }
According to Charles Burns' comment, it still throws an exception, which leads me to believe the patch hasn't made it into NuGet yet. The commit which fixes
Get<dynamic>
is here这篇关于可在小巧玲珑的DynamicParameters对象列举喜欢的参数字典?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!