Dapper ejecutar procedimiento almacenado plantea ArgumentException sobre multi-mapping

dapper

Pregunta

Tengo un procedimiento almacenado que intento ejecutar usando Dapper que genera un error que no parece ser pertinente para lo que trato de hacer, aunque parece que no puedo entender lo que estoy haciendo incorrecto.

Aquí está la firma del procedimiento almacenado que intento llamar:

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

Aquí está el código que he escrito para tratar de llamar al procedimiento:

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

Estos son los parámetros que se pasan en:

enter image description here

Y este es el error que estoy recibiendo:

"Al utilizar las API de mapeo múltiple, asegúrese de configurar el parametro splitOn si tiene claves que no sean Id Nombre del parámetro: splitOn"

ACTUALIZAR

El error se plantea desde el SqlMapper.GetDynamicSerializer(IDataRecord reader, int startBound, int length, bool returnNullIfFirstMissing) . Aquí está la ubicación del error y el seguimiento de la pila:

enter image description here

¿Algunas ideas?

Estoy usando la versión actual de Dapper ( literalmente, solo cloné el repositorio en Github y saqué SqlMapper.cs a mi proyecto justo antes de escribir esta pregunta).

Respuesta aceptada

Descubrí cuál era mi problema aquí. Estaba siguiendo los ejemplos muy literalmente. Mi procedimiento almacenado no devuelve ningún valor, por lo que SqlMapper estaba intentando serializar algo que no estaba allí. Cambié mi código para usar _cnx.Execute(...) lugar de _cnx.Query(...) y todo funciona bien ahora.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow