sqlstr`` 열 순서에 대한 dapper주의에서 다중 맵핑입니까?

dapper orm

문제

예 :

여기 내 pocos입니다 :

public class product
{
    public int productid { set; get; }
    public category category { set; get; }
    public string productname { set; get; }
}

카테고리 :

public class category
{
    public int categoryid { set; get; }
    public string categoryname { set; get; }
    public string Description { set; get; }
}

및 sqlstr :

select p.ProductID, p.ProductName, c.CategoryName, c.CategoryID,  c.Description 
from Products p inner join Categories c 
on p.CategoryID=c.CategoryID

splitOn으로 "c.CategoryID"를 선택하면됩니다. 그런 다음 c.CategoryName은 할당되지 않으므로 열 순서를 변경했습니다.

select p.ProductID, p.ProductName, c.CategoryID,  c.CategoryName, c.Description ...

이번에는 모든 것이 좋습니다.

내가 뭔가를 잘못 이해하면 도움이 될 것입니다.

고마워.

수락 된 답변

사실, 결과가 별칭 ( c. )을 보지 못하므로 "c.CategoryID" 아니라 "CategoryID" 를 사용하여 분할해야한다고 생각합니다. 그러나 설명하려면 : "split on"기능은 수평 세트의 결과를 여러 조각으로 나눕니다. 예를 들어, 우리는 :

Id    A    B    Id    C    D   Id    E    F

우리는 "Id" 다음과 같이 나타냅니다.

Id    A    B         |      Id    C    D        |       Id    E    F

( "split"은 여러 개의 서로 다른 열 이름이 될 수 있으며 매번 같은 일 필요는 없습니다)

그래서 : 각 수평 파티션 내에서 - 아니요, 순서는 중요하지 않습니다. 하지만 : "분할 된"열이 위치하여 열 ( CategoryName )이 잘못된 파티션 에서 끝난 다음 예, 그렇습니다. 이 동작은 열 이름 이 고유하지 않아도 되므로 관련이 없어 질 수있는 CategoryName 찾을 수 없기 때문에 필요합니다. 올바른 파티션에서 CategoryName 을 찾아야 합니다 .

귀하의 구체적인 예 : 열을 이동하거나 간단히 CategoryName 을 분할 이름으로 사용하십시오 (기본적으로 파티션의 첫 번째 열을 알아야합니다).



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow