可在小巧玲珑的DynamicParameters对象列举喜欢的参数字典? [英] Can a Dapper DynamicParameters object be enumerated like a dictionary of parameters?

查看:3335
本文介绍了可在小巧玲珑的DynamicParameters对象列举喜欢的参数字典?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我可以使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆