Dapper 및 Subclass

dapper

문제

서브 클래 싱 된 객체를 포함하는 기존 EF 데이터 모델로 작업하고 있습니다. 개별 객체로 작업 할 때 제대로 작동하지만 많은 수의 객체를로드하여 분석 할 때 속도가 매우 느립니다.

필자는 읽기 전용 분석에 사용되는 POCO 객체를 채우기위한 대안으로 Dapper 를 탐색하기 시작했습니다.

문제는 객체 계층을 올바르게 처리 할 수있는 방법이 없다는 것입니다.

만약 내가 가지고 있다면

var mine = conn.Query<MyBase>("SELECT * from MyTable");

Dapper가 MyBase 의 목록을 올바르게 채 웁니다.

var mine = conn.Query<MyBase>("SELECT * from MyTable");

Multimap 기능은 문제를 해결하지 못합니다 (또는 뭔가 빠졌습니까?).

이 문제를 해결할 수있는 방법이 있습니까? 각 하위 클래스에 대해 데이터베이스를 한 번 왕복하는 것이 부족합니까?

수락 된 답변

String query = "SELECT * FROM Table";

var res = conn.Query<MyBase, MyDerived1, MyDerived2, Tuple<MyBase, MyDerived1, MyDerived2>>(query, (b, d1, d2) => Tuple.Create(b, d1, d2), splitOn: "Derived1Id,Derived2Id");

멀티 매핑 또는 동적 매핑이 트릭을 수행해야합니다.

MM :

String query = "SELECT * FROM Table";

var res = conn.Query<MyBase, MyDerived1, MyDerived2, Tuple<MyBase, MyDerived1, MyDerived2>>(query, (b, d1, d2) => Tuple.Create(b, d1, d2), splitOn: "Derived1Id,Derived2Id");

여기에 이미지 설명을 입력하십시오.

동적 매핑은 또한 매우 차갑고 아마도 귀하의 경우보다 유연합니다 (Thanks @Sam!).

String query = "SELECT * FROM Table";

var res = conn.Query<MyBase, MyDerived1, MyDerived2, Tuple<MyBase, MyDerived1, MyDerived2>>(query, (b, d1, d2) => Tuple.Create(b, d1, d2), splitOn: "Derived1Id,Derived2Id");



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