Dapper Multi-mapping APIs SplitOn param Error - No estoy usando MultiMapping

.net c# dapper sql

Pregunta

Tengo un proyecto en el que interactúo con muchos procesos almacenados. No hay selecciones de SQL desnudo. Estoy usando Dapper. No estamos tratando de usar ninguna de las funciones de MultiMapping. Estoy tratando de descubrir por qué este proc devolvería ese error. ¿Qué debo verificar? ¿Que debería buscar?

Error: al usar las API de mapeo múltiple, asegúrese de configurar el parametro splitOn si tiene claves distintas a Id \ r \ nNombre del parámetro: splitOn

Respuesta aceptada

Debe usar Execute () en lugar de Query (), ya que su SP no devuelve ningún registro. Dapper supone que está intentando obtener datos, por lo que correlaciona los resultados faltantes con su clase de modelo.


Respuesta popular

Me encontré con este problema hoy, y no pude entender por qué estaba recibiendo el mensaje de error MultiMapping cuando en realidad no estaba tratando de hacer mapas múltiples desde el principio. Mi código utiliza la consulta de Dapper en lugar de Execute, porque el sproc realmente devuelve algunas filas.

Resulta que en mi procedimiento almacenado, que toma un solo parámetro varchar, si el parámetro se pasa como NULL, entonces el resultado es solo el valor de retorno entero 0. Si se pasa como una cadena vacía, obtengo un conjunto de resultados vacío en la parte superior de el valor de retorno normal 0.

Como le había ordenado a Dapper que utilizara Query<MyClass> , examinó el retorno simple 0 de la versión nula como int, no como MyClass , y probé Multimap, que es de donde proviene ese error multimap.

Para solucionar esto, cambié mi procedimiento almacenado para convertir un parámetro nulo en un parámetro de cadena vacío, asegurando así un conjunto de resultados vacío en lugar de un conjunto de resultados, y luego Dapper comenzó a trabajar feliz nuevamente.



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