一緒に実行する必要があるいくつかのクエリがあり、QueryMultiple機能を使用して実行できます。
しかし、この場合、 MultiMappingを使用する方法を見つけることができませんでした。
これを達成する方法を知っている人はいますか?
一緒に実行する必要があるいくつかのクエリがあり、QueryMultiple機能を使用して実行できます。
しかし、この場合、 MultiMappingを使用する方法を見つけることができませんでした。
これを達成する方法を知っている人はいますか?
実行しようとしているクエリの例がないとわかりにくいですが、これはあなたが探しているものだと思います。
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;
return p;
}, splitOn: "ChildId").Single();
// Continue to read from the other queries in your sql.
}
基本的に のRead
メソッドは拡張メソッドSqlMapper.GridReader
に似ています。3 つ以上のジェネリック型を取るオーバーロードの 1 つを含むパラメーターQuery
のみを取得します。splitOn
別のスレッドから取られた簡単な例があります: 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();
}
各クエリは一連のオブジェクトを返し、エンティティにマップできます。