Paramètre de la table Dapper OleDB renvoie une erreur non spécifiée

c# dapper table-valued-parameters

Question

J'ai lu votre réponse concernant l'utilisation de TVP dans Dapper, j'ai également implémenté votre solution mais lorsque j'exécute le code, Dapper me renvoie un message "Erreur non spécifiée". J'ai passé en revue tous les composants impliqués:

  1. TVP dans SQL Server
  2. La structure de code dans le code derrière est identique à TVP
  3. Exécuter Stored Proc n'a pas d'erreur

Voici l'exemple de code pour Dapper, j'espère que cela aidera à analyser mon problème;

return _oledbconn.Query<int>(@"exec tvpdapper_sample ?", new { 
otstatus = _dtTVP.AsTableValuedParameter() 
}).SingleOrDefault();

Réponse acceptée

Vous n'indiquez pas ce que le backend est ici. Si le serveur est SQL Server, utilisez SqlConnection . Si le backend est autre chose, il peut même ne pas fonctionner. Les fournisseurs ADO.NET en général ne sont pas requis ou supposés prendre en charge les paramètres de valeur de table.

Notez que pour le moment votre code n'appelle pas une procédure stockée . Au moins, pas directement. Plutôt: il exécute une commande textuelle qui appelle une procédure stockée. Ceci est important car le type de données personnalisé est implicite pour les procédures stockées, mais doit être explicite pour le texte. Et avec OLEDB: il n'y a aucun moyen de le rendre explicite! Donc, vous pourriez constater que cela fonctionne, si votre backend et votre fournisseur prennent tous deux en charge les TVP:

return _oledbconn.Query<int>(@"tvpdapper_sample", new { 
    otstatus = _dtTVP.AsTableValuedParameter() 
}, commandType: CommandType.StoredProcedure).SingleOrDefault();



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