Dapper Multi Mapping 上的某些值 return null
Some value return null on Dapper Multi Mapping
我在使用 Dapper
时遇到问题。
我有一个包含字段 valore
的 Rubrica
class 列表。
当我 运行 使用 JOIN 查询并确定议程类型时,valore
字段仍设置为 null
我的两个 classes 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; }
}
我创建了一个函数,returns 我得到一个 Agenda
的列表,用 table anagrafico_tipo_rubrica
[= 执行 JOIN 27=]
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();
}
}
这里可以看到查询的内容returns
在这里您可以看到 Agenda
列表中 valore
的值如何设置为 null
你在 tipo
上拆分,它在你的查询中出现在 valore
之前,所以 dapper 正在拆分列并且认为 valore
是针对 TipoRubrica
而不是Rubrica
Select 字段的顺序在您的查询中明确显示
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
)
我在使用 Dapper
时遇到问题。
我有一个包含字段 valore
的 Rubrica
class 列表。
当我 运行 使用 JOIN 查询并确定议程类型时,valore
字段仍设置为 null
我的两个 classes 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; }
}
我创建了一个函数,returns 我得到一个 Agenda
的列表,用 table anagrafico_tipo_rubrica
[= 执行 JOIN 27=]
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();
}
}
这里可以看到查询的内容returns
在这里您可以看到 Agenda
列表中 valore
的值如何设置为 null
你在 tipo
上拆分,它在你的查询中出现在 valore
之前,所以 dapper 正在拆分列并且认为 valore
是针对 TipoRubrica
而不是Rubrica
Select 字段的顺序在您的查询中明确显示
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
)