Dapper Multi Mappingでnullを返す値もあります

c# dapper multi-mapping mysql

質問

私はDapperを使って問題を抱えています。私は、フィールドvaloreを含むRubricaクラスのリストを持っています。 JOINを使用してクエリを実行し、アジェンダタイプを識別すると、 valoreフィールドはnull設定されたままになりnull

私の2つのクラスRubricaTipoAgenda

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; }
}

私は、テーブルanagrafico_tipo_rubricaJOINを実行しているAgendaリストを返す関数を作成しました

    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リストがどのようにint valoreの値がnull設定されているかがvalore null

'valore'は値がnullです

受け入れられた回答

あなたはあなたの質問のvalore前に来るtipoに分かれているので、dapperが列を分けていると思うvaloreTipoRubrica代わりにRubricaのためだと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 ...

あなたは上の分割時にそうtipovaloreその前にあり、それは第一のタイプ(にマッピングされていますRubrica )、代わりの二(にTipoRubrica



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ