Dapper의 매핑 엔티티

.net c# dapper mapping orm

문제

나는 Dapper로 작업을 시작했는데 엔티티를 데이터베이스의 테이블에 매핑하는 것과 같은 간단한 것을 찾지 못했습니다.

저장 프로 시저가 있습니다.

public class User
{
    public int Id { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string Email { get; set; }
}

엔티티 :

public class User
{
    public int Id { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string Email { get; set; }
}

그리고 내 코드에서 매우 까다로운 쿼리 :

public class User
{
    public int Id { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string Email { get; set; }
}

내 질문은 : 어떻게 내 ID는 내 데이터베이스에서 Userid 사용자입니다 말할 수 있습니까?

EF에서 나는 다음과 같이 할 것입니다 :

public class User
{
    public int Id { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string Email { get; set; }
}

위의 내용을 어떻게하면 더할 나위없이 달성 할 수 있습니까?

수락 된 답변

Dapper는 의도적으로 매핑 레이어를 가지고 있지 않습니다. 그것은 작동 할 수있는 절대 최소값이며 솔직히 프로세스의 실제 시나리오 대부분을 포함합니다. 그러나 TSQL에서 별칭을 사용하지 않고 pass-thru 속성을 원하지 않는다고 올바르게 이해하면 비 일반적인 Query API를 사용하십시오.

var obj = connection.Query("...", ...).FirstOrDefault();
User user = new User {
      Id = (int) obj.UserId,
      FirstName = (string) obj.FirstName,
      LastName = (string) obj.LastName,
      Email = (string) obj.EmailAddress
};

또는 단일 레코드의 경우보다 간단하게 :

var obj = connection.Query("...", ...).FirstOrDefault();
User user = new User {
      Id = (int) obj.UserId,
      FirstName = (string) obj.FirstName,
      LastName = (string) obj.LastName,
      Email = (string) obj.EmailAddress
};

비 트릭 Query(...) API는 열 이름 당 구성원을 제공하는 dynamic 사용합니다.


인기 답변

사용자 클래스는 쿼리에서 되돌아 오는 결과와 일치하도록 정의되어야합니다.

결과를 얻은 후에는 수동으로 다른 클래스에 매핑해야합니다 (또는 AutoMapper 사용)




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