2016-06-15 5 views

答えて

2

QueryMultipleあなたはのように、すなわち、複数のselectを複数の結果セットにアクセスしているときに使用されます。

瞬間
select * from Order where [email protected] 
select * from Invoice where Id = (...probably some sub-query) 

は、一緒にこのタイプの問合せをステッチするために何の作り付けのAPIはありません;代わりに、あなたのようなものだろう:私はこのシナリオで改善APIを追加したいと思い

using(var multi = conn.QueryMultiple(...)) { 
    var order = multi.ReadSingle<Order>(); 
    order.Invoice = multi.ReadSingleOrDefault<Invoice>(); // could be null if 0 rows 
    return order; 
} 

を、「表現協会、ここで、{このように、このプロパティを使用しているにこれを参加することは非常に厄介です}。{SomeMember}は{that} {SomeOtherMember}と同じです。 "あなたが実際のように、単一のクエリを実行している場合

しかし、:

select o.*, i.* 
from Order o 
left outer join Link l on ... 
left outer join Invoice i on ... 
where o.Id = @id 

あなたは、さまざまなQuery<,...,>オーバーロードを使用することができます。例えば、

int id = ... 
var order = conn.Query<Order, Invoice, Order>(sql, 
    (x,y) => {x.Invoice = y; return x;}, args: new { id }, splitOn: "NumOrder").Single(); 
関連する問題