gpt4 book ai didi

c# - Dapper 版本 1.12.0.0 XML 参数不再有效

转载 作者:行者123 更新时间:2023-11-30 15:37:12 25 4
gpt4 key购买 nike

当通过 dapper 将 xml 字符串传递给 SQL Server 2008 时,dapper 似乎正在为 xml 字符串中的每个字符创建一个参数。

例如,如果字符串是 <outer></outer>它似乎正在创建一个参数对于每个字符(“<”、“o”、“u”、“t”等)

在旧版本中,代码会将一个参数(即指定的 xml 参数)传递给存储过程。

设置代码如下所示 -

var xml = @"
<OuterElement>
<InnerElement>1</InnerElement>
<InnerElement>2</InnerElement>
<InnerElement>3</InnerElement>
<InnerElement>4</InnerElement>
</OuterElement>";

var parameters = new Dapper.DynamicParameters();
parameters.Add("@XmlParameter", xml, DbType.Xml);
SqlMapper.Query(
connection,
"dbo.TestXmlInput",
parameters,
commandType: CommandType.StoredProcedure,
commandTimeout: 60
);

我的问题如下:其他人可以重现吗?如果是这样,此更改是故意的还是错误?是否有实现 xml 参数传递的解决方法?

生成的 SQL 如下所示:

exec dbo.TestXmlInput (@XmlParameter1, @XmlParameter2, @XmlParameter3, ...)

如有任何帮助,我们将不胜感激。

最佳答案

从历史上看,DbType.Xml 已被内部劫持以表示不同的东西。这是有问题的。基本上,当我在 DynamicParameters 中进行参数扩展(@ids 中的 Id)时,它破坏了 xml。

我现在创建了一种不同的表示方式,并将更新后的源代码推送到 google-code 和 github。如果您使用更新后的代码,它应该可以正常工作。我还没有部署 NuGet - 如果您需要这个,请告诉我。

关于c# - Dapper 版本 1.12.0.0 XML 参数不再有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12902735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com