У меня возникла проблема с использованием Dapper
. У меня есть список класса Rubrica
, который содержит поле valore
. При запуске запроса с РЕГИСТРИРУЙТЕСЬ и определить тип повестки дня, то valore
поля остается равным null
Некоторое значение возвращает null на Dapper Multi Mapping
Моих два класса 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();
}
}
Здесь вы можете увидеть, что запрос возвращает
И вот вы видите, как INT в Agenda
списке есть значение valore
набора для null
Пробовал, он работает! Я думал, что Даппер может понять, какое поле автоматически связывает значения, учитывая имя класса. –
По соглашению он разбивается на поля 'Id', но если вы специально рассказываете ему о том, в каком столбце делиться (по параметру' splitOn: "tipo" '), он будет делать, как вы его команду ;-) – Jcl
Даже если бы это было не так, разумно (если у вас нет особой необходимости) выбирать поля, которые вам нужны в ваших запросах, явным образом, а не использовать 'SELECT *' :-) – Jcl