Dapper의 단일 객체에 4 개의 테이블 매핑

dapper mapping

문제

나는 Dapper에 대해 빠른 질문이 있습니다. 4 테이블을 반환하는 쿼리가 있습니다.

3 개의 테이블에는 하나의 정수 열만 있습니다. field1, field2 및 field3이라고합니다.

네 번째 표에는 5 개의 열이 있습니다 : A, B, C, D, E.

나는 4 개의 테이블에서 모든 필드를 가진 ResultSet 이라는 객체를 만들었다.

public class ResultSet
{
    int field1;
    int field2;
    int field3;
    string A;
    string B;
    string C;
    string D;
    string E
}

결과를 ResultSet 객체에 매핑하는 방법은 무엇입니까?

현재 QueryMultiple 을 사용하여 원하는 결과를 얻고 있습니다. 그러나 첫 번째 3 열만 매핑됩니다. A, B, C, D 및 E는 모두 null입니다.

연합을 사용하여 모든 필드를 하나의 테이블로만 가져오고 싶지는 않습니다.

인기 답변

connection.Query 확장 메서드를 적절한 매개 변수가있는 SQL 문을 건네고이를 Type 매개 변수로 개체에 전달하여이 작업을 수행 할 수 있어야합니다.

그런 다음 Dapper는 선택 목록의 항목을 적절하게 별칭 (즉, 개체의 해당 속성 이름으로 별칭)한다고 가정하고 쿼리를 마법에 매핑합니다.

이 줄을 따라 뭔가 일해야합니다 :

public class SomeObject
{
   public int Field1 {get; set;}
   public int Field2 {get; set;}
   public int A {get; set;}
   public int B {get; set;}
   public int C {get; set;}
   public int D {get; set;}
}

using(var connection = SomeConnectionFactory.GetConnection())
{
    var yourObject = 
        connection.Query<SomeObject>("select tab1.someThing as Field1, " +
                                     "tab2.someThing as Field2, " +
                                     "tab4.onePotato as A, " +
                                     "tab4.twoPotato as B, " +
                                     "tab4.threePotato as C, " +
                                     "tab4.four as D " +
                                     "from someTable tab1 " +
                                     "join someTable2 tab2 on tab1.Id = tab2.Id " +
                                     "$$ etc etc for the other joins $$" +
                                    "where tab1.Id = :ID " + ,new {ID = someId});
};

하나의 참고 사항은 Oracle 데이터베이스 (:)에 대한 바인드 변수 구문을 사용했습니다. DB에 해당하는 것으로 이것을 대체해야합니다.

희망은 유용합니다.




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