1. ホーム
  2. dapper

[解決済み】クラスのプロパティでカラム名を手動でマッピングする

2022-04-16 20:14:48

質問

私は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には、このように 列の属性 しかし、私は、依存関係を引き込まないという条件で、サポートを追加することに反対ではありません。