Dapper version 1.12.0.0 paramètre XML ne fonctionne plus

c# dapper

Question

Lors du passage d'une chaîne xml via dapper à SQL Server 2008, dapper semble créer un paramètre pour chacun des caractères de la chaîne xml.

Par exemple, si la chaîne est <outer></outer> elle semble créer un paramètre pour chaque caractère ('<', 'o', 'u', 't', etc.)

Dans l'ancienne version, le code transmettrait un paramètre (à savoir le paramètre xml spécifié) à la procédure stockée.

Le code de configuration ressemble à ceci -

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
);

Mes questions sont les suivantes: Quelqu'un d'autre peut-il reproduire cela? Si oui, ce changement était-il intentionnel ou un bug? Existe-t-il une solution de contournement pour obtenir la transmission des paramètres XML?

Le SQL généré ressemble à ceci:

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

Toute aide serait grandement appréciée.

Réponse acceptée

Historiquement, DbType.Xml avait été piraté en interne pour représenter quelque chose de différent. Ceci est problématique. Fondamentalement, lorsque j'ai effectué l'extension des paramètres ( where Id in @ids ) fonctionne dans DynamicParameters , il a cassé le where Id in @ids XML.

J'ai maintenant créé une manière différente de représenter cela et j'ai poussé la source mise à jour vers google-code et github. Si vous utilisez le code mis à jour, cela devrait fonctionner correctement. Je n'ai pas encore déployé NuGet - faites-le moi savoir si vous en avez besoin.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi