Erreur lors de l'exécution d'une procédure stockée qui ne renvoie aucun résultat

c# dapper stored-procedures

Question

J'utilise actuellement dapper sur l'un de nos projets et nous exécutons des procédures stockées tout le temps. Dans les premières méthodes, tout fonctionnait bien lorsque la procédure stockée exécutée renvoyait des lignes.

En ce moment, je suis confronté à un problème lorsque j'essaie de récupérer des données à partir d'une procédure stockée qui renvoie des informations lorsqu'elles sont trouvées. Il s’agit d’un cas d’utilisation très courant (par exemple, enregistrement des utilisateurs sur l’application). Lors de l'appel de la méthode Query et que le sproc ne renvoie aucune ligne, dapper lève une exception ArgumentException avec le message:

"Lorsque vous utilisez les API de mappage multiple, veillez à définir le paramètre splitOn si vous avez des clés autres que le nom du paramètre d’ID: splitOn"

Le code que j'utilise est:

using (var conn = new SqlConnection(connString))
{
    conn.Open();

    return conn.Query<Customer>(
            sql: "prc_GetCustomer",
            param: new { Parameter = p },
            commandType: CommandType.StoredProcedure).FirstOrDefault();
}

Je sais qu'il existe une méthode Execute qui devrait être utilisée lorsque la procédure est censée ne pas renvoyer de lignes, mais ce n'est vraiment pas ma situation. De plus, l'exception Dapper est trompeuse, car je n'utilise pas le multi-mapping.

Des idées? Merci!

Réponse acceptée

Si la requête ne renvoie aucune grille de résultat, vous devez utiliser Execute et non Query.




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