クラスプロパティで列名を手動でマップする

dapper

質問

私はDapper Micro ORMの新機能です。これまで私は単純なORM関連のもののためにそれを使用することができますが、私はクラスのプロパティでデータベースの列名をマップすることができません。例えば:

私は次のようにデータベーステーブルを持っています:

Table Name: Person
person_id  int
first_name varchar(50)
last_name  varchar(50)

私はPersonというクラスを持っています

public class Person 
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

テーブルの私のカラム名は、私がクエリ結果から得たデータをマップしようとしているクラスのプロパティ名とは異なることに注意してください。

var sql = @"select top 1 PersonId,FirstName,LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
    var person = conn.Query<Person>(sql).ToList();
    return person;
}

列名がオブジェクトの(Person)プロパティと一致しないため、上記のコードは機能しません。このシナリオでは、Dapperでオブジェクトのプロパティを使用して列名を手動で( person_id => PersonId )マップすることができますか?

どんな手掛かりや助けも高く評価されます。

受け入れられた回答

これはうまくいきます:

var sql = @"select top 1 person_id PersonId, first_name FirstName, last_name LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
    var person = conn.Query<Person>(sql).ToList();
    return person;
}

Dapperには、 列属性を指定できる機能がありません。私は依存性を引き出さない限り、サポートを追加することに反対していません。


エキスパート回答

しばらくの間、次のように動作するはずです。

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow