Некоторое значение возвращает нуль в Dapper Multi Mapping
У меня проблема с использованием Dapper
, У меня есть список Rubrica
класс, содержащий поле valore
, Когда я запускаю запрос с JOIN и определяю тип повестки дня, 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; }
}
Я создал функцию, которая возвращает мне список 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
установлен в null
1 ответ
Вы делитесь на tipo
, который предшествует valore
в вашем запросе, так что dapper разбивает столбцы и думает valore
для TipoRubrica
вместо для Rubrica
Выберите порядок полей явно по вашему запросу
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
)