작성
·
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입니다.
다건 처리의 경우 Entity에서 DTO는 강의에서 소개됩니다. 15강 19:39
그러나 프로시저를 이용하는 경우
BLL에서 Controller로 전달시에 행수만큼 반복문을 통해 DTO생성 후 Collection에 담아줍니다.
public async Task<List<GetUserResponseDTO>> GetUsers()
{
}
Controller에서 받을 때 다음과 같이 해주시면 됩니다.
List<GetUserResponseDTO> userDtos = loginService.GetUsers();
그러나 때로는 실무에서 DTO생성을 생략 후 Controller에서 DataAccessLayer를 호출하기도 합니다.
감사합니다.