Dapper 매핑 결과 목록

c# dapper orm sql

문제

내 스토어드 프로 시저는 관계형 테이블의 조직 세부 사항과 함께 사용자 목록을 리턴합니다.

C # 웹 API 응용 프로그램에서 저장 프로 시저를 실행하기 위해 dapper를 사용했습니다.

나는 더럽다. 저장 프로 시저에서 반환 한 결과를 내 모델에 매핑하는 방법은 무엇입니까?

저장 프로 시저

CREATE PROCEDURE [dbo].[GetAllUsersByOrganisation]
    @OrganisationId int = 0

AS
    SELECT * from dbo.Users u
    inner join dbo.Organisations org on u.OrganisationId = org.Id
    Where u.OrganisationId = @OrganisationId

메서드 실행

public List<User> GetUseryOrganisation(int organisationId)
{
    var users = DataContextFactory.GetConnectionString(_settings)
        .Execute("dbo.GetAllUsersByOrganisation", new {OrgantisationId = organisationId},
            commandType: CommandType.StoredProcedure);

    // Map to return List of User
}

모델

 public class User
    {
        public string Title { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string PhoneNumber { get; set; }
        public string EmailAddress { get; set; }
        public Organisation Organisation { get; set; }
    }

    public class Organisation
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

수락 된 답변

반환 된 레코드 세트 (사용자 데이터 및 조직 데이터)에서 두 가지 유형이 예상되는 Query 오버로드를 사용하고 조직 데이터를 사용자 엔터티에 할당해야합니다.

var users = DataContextFactory.GetConnectionString(_settings)
    .Query<User, Organisation, User>(
         "dbo.GetAllUsersByOrganisation",
         (u,o) => { u.Organisation = o; return u; }, // map function
         new {OrgantisationId = organisationId},
         commandType: CommandType.StoredProcedure);

return users.ToList();


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