ダッパドットネットマッピングのDB列名を指定できますか?

c# dapper database

質問

dapper-dot-netに属性を使用して、使用する列名を指定し、プロパティ名を指定する方法はありますか?

public class Code
{
    public int Id { get; set; }
    public string Type { get; set; }
    // This is called code in the table.
    public string Value { get; set; }
    public string Description { get; set; }
}

私は何でも私の財産に名前を付けることができるようにしたいと思います。私たちのデータベースには一貫した命名規則はありません。

もしdapperでないなら、同様のオプションがありますか?

受け入れられた回答

Dapper-Extensionsをチェックアウトすることもできます。

Dapper Extensionsは、POCOの基本的なCRUD操作(Get、Insert、Update、Delete)を追加することで、Dapperを補完する小さなライブラリです。

それはあなたのカスタムフィールドのマッピングを指定することができる自動クラスマッパーを持っています。例えば:

public class CodeCustomMapper : ClassMapper<Code>
{
    public CodeCustomMapper()
    {
        base.Table("Codes");
        Map(f => f.Id).Key(KeyType.Identity);
        Map(f => f.Type).Column("Type");
        Map(f => f.Value).Column("Code");
        Map(f => f.Description).Column("Foo");
    }
}

次に、

using (SqlConnection cn = new SqlConnection(_connectionString))
{
    cn.Open();
    var code= new Code{ Type = "Foo", Value = "Bar" };
    int id = cn.Insert(code);
    cn.Close();
}

POCOクラスと同じアセンブリにカスタムマップを保持する必要があることに注意してください。ライブラリはリフレクションを使用してカスタムマップを検索し、1つのアセンブリのみをスキャンします。

更新

SetMappingAssembliesを使用して、スキャンするアセンブリのリストを登録できるようになりました。

DapperExtensions.SetMappingAssemblies(new[] { typeof(MyCustomClassMapper).Assembly });

人気のある回答

select文を直接使用する場合やプロシージャで使用する場合は、列のエイリアスを作成するだけです。

SELECT code as Value FROM yourTable


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