2

異なる列名を持つテーブルの列にマップされた 1 つまたは 2 つのプロパティ (数十のうち) を持つ必要があるクラスがいくつかあります。データベース内の列名と異なるのは 2 つだけである場合、すべてのプロパティをマップしたくありません。

CustomPropertyTypeMap で使用できるさまざまなマッピング オプションのすべてについて適切なドキュメントを見つけることができません。それらはすべて、オブジェクト全体を CustomPropertyTypeMap でマッピングすることを示しているだけです (Dapper テスト クラスと同様)。以下を使用する場合:

// Set up custom repository parameter mappings.
var map = new CustomPropertyTypeMap(typeof(T),
    (type, columnName) => type
        .GetProperties()
        .FirstOrDefault(
            prop => prop.GetCustomAttributes(false)
                .OfType<RepositoryParameterAttribute>()
                .Any(attr => attr.ParameterName == columnName)));

Dapper.SqlMapper.SetTypeMap(typeof(T), map);

// Query the database
items = await databaseConnection.QueryAsync<T>(
    storedProcedure,
    itemParameters,
    commandType: CommandType.StoredProcedure,
    transaction: transaction);

RepositoryParameterAttribute で装飾されていないプロパティは、null (または 0) を返します。これを使用して特定のプロパティだけをマップし、Dapper に装飾されていない残りの属性をハイドレートさせることができますか?それとも何かカスタムを行う必要がありますか?

ありがとう。

4

1 に答える 1