Dapper Multi Mapping上的某些值返回null

时间:2016-04-21 08:01:08

标签: c# mysql dapper multi-mapping

我在使用Dapper时遇到问题。 我有一个包含字段Rubrica的{​​{1}}类的列表。 当我使用 JOIN 运行查询并确定议程类型时,valore字段仍设为valore

我的两个班级nullRubrica

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; } } 列表 JOIN 与表Agenda

anagrafico_tipo_rubrica

您可以在此处查看查询返回的内容

My result Query

在这里,您可以看到 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(); } } 列表中Agenda的值如何设置为valore

'valore' have value null

1 个答案:

答案 0 :(得分:4)

您在查询tipo之前的valore上进行拆分,因此dapper正在拆分列,并认为valore用于TipoRubrica而非Rubrica 1}}

在查询中明确选择字段的顺序

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

因此,当您在tipo上拆分时,valore就在此之前,并且它映射到第一个类型(Rubrica),而不是第二个(TipoRubrica