dapper.net 내부 조인을 사용하는 스플라인 문제

dapper sql

문제

dapper.net을 통해 실행되는 다음 SQL 쿼리가 있습니다.

  var resultList = sqlCon.Query<UserProfile, UserAddress, UserProfile>(@"

                            UPDATE [User].[User_Profile]
                                SET ProfileStatus = 4
                            WHERE Id = @UserId

                            SELECT u.Id [UserId], u.Username, u.Age,
                                   u.ProfileStatus,
                                   a.Id [AddressId], a.Country, a.[State], a.City,
                                   a.Latitude, a.Longitude
                            FROM [User].[User_Profile] u
                            INNER JOIN [User].[User_Address] a on u.id = a.UserId
                            WHERE u.Id = @UserId", (u, a) =>
                            {
                                u.Id = a.UserId;
                                return u;
                            },
                            new { UserId = userId }, splitOn: "UserId").FirstOrDefault();

그것을 실행할 때이 오류가 나타납니다.

다중 매핑 API를 사용할 때 IDO, â € splitOn 이외의 키가있는 경우 splitOn 매개 변수를 설정하십시오.

내 두 클래스는 다음과 같습니다 :

첫 번째는 채우려는 메신저 인 userProfile입니다.

 public class UserProfile
{
    public Int64 UserId { get; set; }

    public string UserName { get; set; }

    public int Age { get; set; }

    public int ProfileStatus { get; set; }

    public Int64 AddressId { get; set; }

    public int Country { get; set; }

    public int State { get; set; }

    public int City { get; set; }

    public decimal Latitude { get; set; }

    public decimal Longitude { get; set; }
}

이것은 내 사용자 주소 클래스입니다.

 public class UserAddress
{
    public Int64 Id { get; set; }

    public Int64 UserId { get; set; }

    public int Country { get; set; }

    public int State { get; set; }

    public int Town { get; set; }

    public string PostCode { get; set; }

    public decimal Latitude { get; set; }

    public decimal Longitude { get; set; }
}

나는 내가 UserId에서 분리한다고 말한 것처럼 내가 뭘 잘못하고 있는지 모르겠다. 그러나 분명히 그럴 것 같지 않습니까?

** 업데이트 **

별칭을 사용하여 SQL 문 업데이트

                            SELECT u.Id as [UserId], u.Username as [Username], u.Age as [Age],
                                   u.ProfileStatus as [ProfileStatus], 
                                   a.Id as [AddressId], a.Country as [Country], a.[State] as [State],
                                   a.City as [City], a.Latitude as [Latitude], a.Longitude as [Longitude]
                            FROM [User].[User_Profile] u
                            INNER JOIN [User].[User_Address] a on u.id = a.UserId
                            WHERE u.Id = @UserId", (u, a) =>
                            {
                                u.UserId = a.UserId;
                                return u;
                            },
                            new { UserId = userId }, splitOn: "AddressId").FirstOrDefault();

인기 답변

UserId 가 쿼리의 첫 번째 열이므로 SplitOn 이 올바르지 않습니다. 첫 번째 테이블 / 클래스를 두 번째로 구분하는 열을 제공해야하므로 첫 번째 열 / 별칭은 User_Profile 테이블에 User_Profile 않지만 User_Address 테이블에 User_Address .

그게 AddressId 것 같습니다.

// ...
new { UserId = userId }, splitOn: "AddressId").FirstOrDefault();


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