2012-04-25 6 views

答えて

10

私はこれがあなたが探しているものだと思いますが、あなたが実行しようとしているクエリの例がなくても分かりません。

var sql = @"Select * 
      From Parent 
      Left Join Child on Child.ParentID = Parent.ParentID 
      Where Parent.ParentID = @id 
      ... more queries"; 

using(var reader = connection.QueryMultiple(sql, new {id=selectedId})) 
{ 
    var stuff = reader.Read<Parent, Child, Parent>(
     (p,c)=>p.Child = c, splitOn: "ChildId"); 
    // Continue to read from the other queries in your sql. 
} 

基本的SqlMapper.GridReaderReadQuery方法は、拡張メソッドと同様です。 splitOnパラメータは、2つ以上のジェネリックタイプを必要とするオーバーロードのいずれかでのみ取得されます。

1

は別のスレッドから取られた簡単な例をtheresの:how-to-get-values-for-child-objects

var sql = 
@" 
select * from PROFILES where profileId= @id 
select * from PROFILEIMAGES where OWNER_PROFILESIDFK = @id"; 

using (var multi = connection.QueryMultiple(sql, new {id=selectedId})) 
{ 
    var profile = multi.Read<Models.PROFILE>().Single(); 
    profile.ProfileImages = multi.Read<Model.PROFILEIMAGES>().ToList(); 
} 

各クエリは、あなたのエンティティにマッピングすることができるオブジェクトのセットを返します。

+0

ありがとうございました。しかし、私は[Multimapping](https://github.com/SamSaffron/dapper-dot-net/blob/master/Tests/Tests.cs#L459)機能を使用する方法を探しています –

+0

例を教えてくださいあなたは何をしようとしているのですか? – Alex

+1

基本的に私はいくつかのフィールドをSQLで非正規化して格納します(たとえば、 ";"などで区切られたすべてのタグを持つDTagsフィールド)。 QueryMultiple(Readメソッド)を使用すると、MultiMappingクエリのように "split"パラメータを使用するオプションがありません –

関連する問題