我在使用Dapper
时遇到问题。
我有一个包含字段Rubrica
的{{1}}类的列表。
当我使用 JOIN 运行查询并确定议程类型时,valore
字段仍设为valore
我的两个班级null
和Rubrica
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
您可以在此处查看查询返回的内容
在这里,您可以看到 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
答案 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
)