2016-07-20 6 views
0

Dapper.Queryから返された動的変数をオブジェクトに変換することは可能ですか?例:レコードからのMyClassのproperitesを埋めるためにオブジェクトをdapperからオブジェクトに変換するクエリ<dynamic>

class MyClass 
{ 
    public int Id { get; set;} 
    public string SomeData { get; set; } 
} 

IEnumerable<dynamic> data = sql.Query<dynamic>(SELECT * FROM MyClassTable"); 
foreach(var record in data) 
{ 
    int parent_id = record.SomeId; 
    // any simple way to fill MyClass properites from record? 
    // instead of doing in manually? 
    MyClass obj = ? 
} 

答えて

1

任意の簡単な方法?手動でではなく ?

いいえ、残念ながら手動で行う必要があります。あなたができる最良のことは、マッピングロジックを1つの場所に移動して、データアクセスレイヤーで再利用できることです。私は通常、拡張メソッドを使用しますが、リフレクションを使用して一致するプロパティ名を設定することもできます。私の個人的な意見では、通常、パフォーマンスのメリットとしてdapperを使用し、反射を使用するのは少し高価です。これらの場合の反射。

Dapper.Queryから返された動的変数をオブジェクトに変換することはできますか?

はい。上記で説明したように

あなたはおそらくあなたの質問を簡素化したいと思っていますが、MyClassがその選択クエリによって返されたレコードを表す場合、投稿した例が動的オブジェクトを返す必要はないことを指摘しておく価値があると思います。あなたは単に次のことを行うことができます...

var data = sql.Query<MyClass>(SELECT * FROM MyClassTable"); 
+0

はい、私は処理したいMyClassTable(例のSomeId)に追加のパラメータがあります。私はMultiMappingを認識していますが、この場合は使用したくありません。 – Lukasz

+0

@Lukasz説明したように、手動で行う必要があります – Leo

関連する問題