【发布时间】:2017-08-24 22:53:13
【问题描述】:
我正在开发一个将大型 VB6 应用程序转换为 .NET 的项目。我决定创建一个项目来为现有的 VB6 ADO 代码提供外观,在这里我使用令人惊叹的 Dapper 扩展方法来处理 VB6 ADO 函数曾经执行的所有数据库代码。
我在新项目中必须支持的功能之一是能够从 T-SQL 存储过程(通过 FOR XML)获取 XML 字符串结果。 Dapper 不支持返回我可以看到的这个 XML。因此,我实现了 ADO.NET ExecuteXmlReader 方法来提供此返回。我的项目还使用 Dapper DynamicParameters 来捕获存储过程所需的所有输入/输出参数。
我不知道该怎么做,是如何将DynamicParameters 转换为SqlCommand.SqlParameterCollection,以便我可以将这些参数填充到SqlCommand 对象的ExecuteXmlReader 方法中。对于这种情况,我也必须支持输出参数。
我可以遍历DynamicParameters,但这只会让我得到参数名称和值。我还需要方向、类型、大小、比例和精度。 Dapper 有一个 DynamicParameters.ReplaceLiterals 方法,它接受一个 IDbCommand 对象来替换 SQL 字符串中的文字。我希望它有一种方法也可以填写参数。
我在这里遗漏了一些明显的东西吗?如果我调用 Dapper Execute 方法,我可以将 DyanmicParameters 直接传递到此方法中。我只是没有看到如何将它们传递给 SqlCommand 对象。
【问题讨论】: