web-dev-qa-db-ja.com

マッピング時にDapperにフィールド名のアンダースコアを無視/削除させる方法は?

データベースのフィールド名をクラス名にマップする方法はたくさんありますが、アンダースコアを削除する最も簡単な方法は何ですか?

    public IEnumerable<PersonResult> GetPerson(int personId)
    {
        using (var dbConnection = _dbConnectionFactory.Create(ConnectionStrings.ProjectXYZ))
        {
            IEnumerable<PersonResult> result =
                dbConnection.Query<PersonResult>("fn_get_person", new { personId },
                    commandType: CommandType.StoredProcedure).ToList();

            return result;
        }
    }

テーブルとデータベースのフィールド:

person
-------- 
person_id
full_name

機能するクラス:(dapperはすでに大文字を無視しています)

public class PersonResult
{    
    public int Person_Id { get; set; }
    public string Full_Name { get; set; }
}

クラスを次のように変更します。

public class PersonResult
{    
    public int PersonId { get; set; }
    public string FullName { get; set; }
}
26
scw
Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

仕事完了; p

42
Marc Gravell

readme は、列名の変更のサポートを示していません。 selectでエイリアスを付けることができます。

select person_id as personid, full_name as fullname from fn_get_person();

この答え で提案されています。

3
Andomar