Dapper - QueryMultiple - 3 개의 테이블

dapper

문제

나는이 관계를 가졌다. 관계

QueryMultiple 엔터티를 사용하여 주문 엔터티 및 송장 엔터티의 정보를 검색하는 방법은 무엇입니까?

감사

전문가 답변

QueryMultiple 은 여러 결과 세트에 액세스 할 때 사용됩니다 (예 : multiple select ).

select * from Order where Id=@id
select * from Invoice where Id = (...probably some sub-query)

현재이 유형의 쿼리를 함께 묶는 내장 된 API는 없습니다. 대신에 다음과 같이하면됩니다.

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

이 시나리오에 대해 개선 된 API를 추가 하고 싶습니다. "이 속성을 {{}}. {SomeMember}가 {{}}. {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();


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.