Dapper no llena la entidad, incluso con el derecho "splitOn"?

.net-4.6 c# dapper sql-server

Pregunta

Mirando esta consulta simplificada de SQL Server:

set @userid2=...

SELECT *,
       SPLIT = '',
       userid2 = @userid2

    FROM   Comments c
           JOIN Users u
                ON  ...

Estoy usando este código parcialmente funcional para ejecutar el SP:

 await c.QueryAsync<Comment, User, SqlInt, CommentWithSenderAndUserId2>(@"insertCommentByImageId",
(message1, user, myint) => new CommentWithSenderAndUserId2 
                                {
                                  User = user,
                                  Comment = message1, 
                                  UserId2 = myint.MyIntValue
                                },
  new {imageid = imageId, userid1 = userid1, comment = comment}, //parms
  splitOn: "UserID,split",  //splits
  commandType: CommandType.StoredProcedure //command type
 )

Como puede ver, devuelvo todas las columnas tanto de Comments como de Users MÁS un valor int .

Bueno, sé que no puedo devolver un valor int simplemente, necesito devolver una entidad.

Es por eso que creé esta clase ficticia para mantener un valor int :

public class SqlInt
    {
        public int MyIntValue { get; set; }
    }

Y como puede ver, es parte de los tipos genéricos:

c.QueryAsync<Comment, User, SqlInt, CommentWithSenderAndUserId2>

Básicamente, tomo un Comment , User , SqlInt y lo pongo todo en CommentWithSenderAndUserId2

Entonces, dónde está el problema ?

El valor int de mi clase ficticia nunca se llena y siempre es 0 (otras entidades se llenan bien)

enter image description here

Leí esta publicación (como lo hice en mi SP) que debería agregar una columna divisora ​​como:

   SELECT *, 
           SPLIT = '',       <----------- Here
           userid2 = @userid2

Pregunta

¿Qué estoy haciendo mal y cómo puedo obtener mi valor de myInt lleno?

Respuesta aceptada

Bueno, encontré mi tonto error.
El problema es que he creado una entidad para mantener un valor int , ¿verdad?

  public class SqlInt
    {
        public int MyIntValue { get; set; }
    }

El nombre de la propiedad es MyIntValue . Si es así, ¿por qué hice esto?

SELECT *,
           SPLIT = '',
           userid2 = @userid2

En lugar del enfoque correcto:

SELECT *,
           SPLIT = '',
           MyIntValue = @userid2 <---- change is here

Ahora veo ese valor correcto.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué