Некоторое значение возвращает нуль в 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();
        }
    }

Здесь вы можете увидеть, что возвращает запрос

Мой результат Query

И здесь вы видите, как Agenda список есть значение valore установлен в null

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)

Другие вопросы по тегам