Dapper execute procédure stockée déclenche ArgumentException à propos de multi-mapping

dapper

Question

J'ai une procédure stockée que j'essaie d'exécuter à l'aide de Dapper qui génère une erreur qui ne semble pas être pertinente pour ce que j'essaie de faire, même si je n'arrive pas à comprendre ce que je fais faux.

Voici la signature de la procédure stockée que j'essaie d'appeler:

ALTER PROCEDURE [dbo].[stp_UpdateInboundDaf]
    @InboundType varchar(255),
    @Id bigint,
    @UserId bigint,
    @DonationID bigint = NULL,
    @StatusId int = NULL,
    @FinalFlag bit = NULL,
    @ValidatedFlag bit = NULL,
    @SignedFlag bit = NULL
AS ...

Voici le code que j'ai écrit pour essayer d'appeler la procédure:

_cnx.Query("stp_UpdateInboundDaf", new
{
    InboundType = parameters.InboundType,
    Id = parameters.Id,
    UserId = parameters.UserId,
    DonationId = parameters.DonationId,
    StatusId = parameters.StatusId,
    FinalFlag = parameters.IsFinal,
    ValidatedFlag = parameters.Validated,
    SignedFlag = parameters.Signed
}, commandType: CommandType.StoredProcedure);

Ce sont les paramètres qui sont passés dans:

entrer la description de l'image ici

Et c'est l'erreur que je reçois:

"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"

METTRE À JOUR

L'erreur est SqlMapper.GetDynamicSerializer(IDataRecord reader, int startBound, int length, bool returnNullIfFirstMissing) la SqlMapper.GetDynamicSerializer(IDataRecord reader, int startBound, int length, bool returnNullIfFirstMissing) . Voici l'emplacement de l'erreur et la trace de la pile:

entrer la description de l'image ici

Des idées?

J'utilise la version actuelle de Dapper (j'ai littéralement juste cloné le repo sur Github et tiré SqlMapper.cs dans mon projet juste avant d'écrire cette question).

Réponse acceptée

J'ai compris mon problème ici. Je suivais les exemples aussi littéralement. Ma procédure stockée ne renvoie aucune valeur, donc SqlMapper essayait de sérialiser quelque chose qui n'était pas là. J'ai changé mon code pour utiliser _cnx.Execute(...) au lieu de _cnx.Query(...) et tout fonctionne bien maintenant.




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