인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

wltn07551님의 프로필 이미지
wltn07551

작성한 질문수

ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0

DB에서 조회된 다건의 데이터를 처리할 때

작성

·

123

0

안녕하세요 강사님

저 강의를 다회차 보면서 궁금한 점이 생겨서요.

기존 코드

        public async Task<GetUserResponseDTO> GetUser(GetUserDTO getUserDTO)
        {

            var configuration = new MapperConfiguration(cfg => { });
            //Response..DTO 생성후 Controller로 전달

            // Perform mapping
            Mapper mapper = new Mapper(configuration);
            Dictionary<string, object> dc=mapper.Map<GetUserDTO,Dictionary<string, object> >(getUserDTO);
            dc.Remove("Password");
            ProcCall procCall= new ProcCall();
            DataTable dt = await procCall.RequestProcedure("sp_login", dc);

            GetUserResponseDTO dto = new GetUserResponseDTO();
            dto.Id = (int)dt.Rows[0]["id"];
            dto.Userid = dt.Rows[0]["userid"].ToString();
            dto.Username = dt.Rows[0]["Username"].ToString();
            dto.Point = (int)dt.Rows[0]["Point"];
            return dto;
        }

로그인 서비스의 관련하여 dto의 담기는 오브젝트가 적고 단 건이라 이러한 방식으로 처리가 가능한 것 같습니다. 해당 부분의 활용하여 다건의 데이터를 처리하기는 어려울 것 같은데 어떤 방식이 있는지 확인 가능할까요??

 

 

 

답변 1

0

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요 개발자park입니다.

다건 처리의 경우 Entity에서 DTO는 강의에서 소개됩니다. 15강 19:39

그러나 프로시저를 이용하는 경우

BLL에서 Controller로 전달시에 행수만큼 반복문을 통해 DTO생성 후 Collection에 담아줍니다.

public async Task<List<GetUserResponseDTO>> GetUsers()

{

}

Controller에서 받을 때 다음과 같이 해주시면 됩니다.

List<GetUserResponseDTO> userDtos = loginService.GetUsers();

그러나 때로는 실무에서 DTO생성을 생략 후 Controller에서 DataAccessLayer를 호출하기도 합니다.

감사합니다.

wltn07551님의 프로필 이미지
wltn07551

작성한 질문수

질문하기