Dapper MultiMapping no funciona

c# dapper

Pregunta

Estoy tratando de crear una List de objetos Work usando Dapper para hacer la asignación.

Este es el código:

public class Work
{
  public int id { get; set; }
  public int id_section { get; set; }
  public decimal price { get; set; }
  public Model id_model { get; set; }
  public Type id_type { get; set; }
}

class Model
{
    public int id_model { get; set; }
    public string Name { get; set; }
}

class Type
{
    public int id_type { get; set; }
    public string Name { get; set; }
}

public List<Work> GetListOfWork(int idList)
{
using (DatabaseConnection db = new DatabaseConnection()) //return a connection to MySQL
{
     var par = new {Id =  idList};
     const string query = "SELECT id,id_section,price,id_model,id_type FROM table WHERE id_section = @Id";
     return db.con.Query<Work, Model, Type, Work>(query,
          (w, m, t) =>
          {
                w.id_model = m;
                w.id_type = t;
                return w;
          }, par, splitOn: "id_model,id_type").ToList();
}
}

No me da ningún error, pero id_model y id_type en mi lista devuelta están siempre vacíos (se crean el objeto pero todos los campos están vacíos o nulos), otros campos se asignan correctamente.

Cualquier pista ?

Respuesta popular

Necesitas agregarte las uniones en la cadena de consulta Probablemente es algo como esto

 var par = new {Id =  idList};
 const string query = @"SELECT w.id,w.id_section,w.price,
                        m.id_model, m.Name, t.id_type, t.Name
                        FROM work w INNER JOIN model m on w.id_model = m.id_model
                                    INNER JOIN type t on w.id_type = t.id_type
                        WHERE w.id_section = @Id";
 return db.con.Query<Work, Model, Type, Work>(query,
      (w, m, t) =>
      {
            w.id_model = m;
            w.id_type = t;
            return w;
      }, par, splitOn: "id_model,id_type").ToList();


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é