Algunos valores devuelven nulo en Dapper Multi Mapping

c# dapper multi-mapping mysql

Pregunta

Tengo un problema al utilizar Dapper . Tengo una lista de la clase Rubrica que contiene el campo valore . Cuando ejecuto una consulta con un JOIN e identifico el tipo de agenda, el campo valore permanece en null

Mis dos clases Rubrica y TipoAgenda

public class Rubrica // Same as table anagrafico_rubrica
{
    public int id_rubrica { get; set; }
    public string cod_anagrafica { get; set; }
    public string descrizione_contatto { get; set; }
    public TipoRubrica tipo { get; set; }
    public string valore { get; set; }
}

public class TipoRubrica // Same as table anagrafico_tipo_rubrica
{
    public int id_tipo_rubrica { get; set; }
    public string descrizione_tipo_rubrica { get; set; }
}

anagrafico_tipo_rubrica una función que me devuelve una lista de Agenda haciendo un JOIN con la tabla anagrafico_tipo_rubrica

    public List<Rubrica> GetAgendaAnagrafico(string codiceAnagrafico)
    {
        using (DatabaseConnection db = new DatabaseConnection())
        {
            const string query = @"SELECT * FROM anagrafico_rubrica JOIN anagrafico_tipo_rubrica ON tipo = id_tipo_rubrica WHERE cod_anagrafica = @anagrafico";
            var parametri = new { anagrafico = codiceAnagrafico };
            return db.con.Query<Rubrica, TipoRubrica, Rubrica>(query, (rubrica, tipo) => { rubrica.tipo = tipo; return rubrica; }, parametri, splitOn: "tipo").ToList();
        }
    }

Aquí puede ver lo que devuelve la consulta

Mi resultado Consulta

Y aquí puede ver cómo en la lista Agenda hay el valor de valore establecido en null

'valore' tiene valor nulo

Respuesta aceptada

Estás dividiendo en tipo , que viene antes de valore en tu consulta, así que dapper está dividiendo las columnas y pensando que el valore es para TipoRubrica lugar de para Rubrica

Seleccione el orden de los campos explícitamente en su consulta

SELECT id_rubrica, 
       cod_anagrafica, 
       descrizione_contatto, 
       valore, 
       tipo,       // <-- you are splitting here. columns above are for 
                   //     first type, columns below for second
       id_tipo_rubrica, 
       descrizione_tipo_rubrica 
    FROM ...

Entonces, cuando se divide en tipo , valore está antes de eso, y está asignado al primer tipo ( Rubrica ), en lugar de al segundo ( TipoRubrica )



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é