dapper を介して xml 文字列を SQL Server 2008 に渡すと、dapper は xml 文字列内の各文字のパラメーターを作成しているようです。
たとえば、文字列が の場合、<outer></outer>
各文字 (「<」、「o」、「u」、「t」など) のパラメーターを作成しているように見えます。
古いバージョンでは、コードは 1 つのパラメーター (つまり、指定された 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, ...)
どんな助けでも大歓迎です。