Dapperを使用してEnumプロパティを設定する

c# dapper enums

質問

DapperのQuery()関数を使用する際に、列挙された値であるプロパティを持つクラスを埋めようとしています。私のデータベースでは、この列はバイトとして格納されます。しかし、クラスではenumです。古いADO.NETのアプローチでは、私はリーダーループの間に変換します:

myClass.myEnum = (MyEnumType) reader.GetByte(2);

Dapperを使用するとき、私はこの変換を行う方法を理解できません。例えば私が何かのようなことをするとき

myClass = conn.Query<MyClassType>("SELECT ... ")

私はタイプのエラーを取得する

Error parsing column 2 (myEnum=1 - Byte)

DaumのQuery()を使ってenum型のプロパティを含むクラスを埋め込む方法はありますか?

受け入れられた回答

確かに - あなたのenumが同意する限り、すなわち

enum MyEnumType : byte {
    Foo, Bar, Blip, ...
}

それはすべて自動的に動作します。

(この制限は設計によるもので、LINQ-to-SQLと共有されます)

代わりに、enumが: intで変更できない場合は、SQLでキャストします:

SELECT ..., CAST(x.myEnum as int) as myEnum, ...

または、最後にdynamic APIを使用します。

foreach(var row in conn.Query(...)) { // note no <T>
    T obj = new Item { /* copy from row */ };
    ...
}

最初のものは私の好みのオブジェクトです。これは、すべてのコード全体でbyteデータ型の制限を適用します.IMOは良いことです。



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