development

속성 이름이 다른 경우 매핑 규칙을 지정하는 방법

big-blog 2020. 6. 29. 07:32
반응형

속성 이름이 다른 경우 매핑 규칙을 지정하는 방법


저는 Automapper 프레임 워크의 초보자입니다. 다음과 같이 도메인 클래스와 DTO 클래스가 있습니다.

public class Employee
{
   public long Id {get;set;}
   public string Name {get;set;}
   public string Phone {get;set;}
   public string Fax {get;set;}
   public DateTime DateOfBirth {get;set;}
}

public class EmployeeDto
{
   public long Id {get;set;}
   public string FullName {get;set;}
   public DateTime DateOfBirth {get;set;}
}

참고 : 클래스의 " Name " 속성 이름Employee클래스의 " FullName " 속성 이름 과 다릅니다 EmployeeDto.

다음은 Employee객체를 매핑하는 코드입니다 EmployeeDto.

Mapper.CreateMap<Employee, EmployeeDto>(); // code line (***)
EmployeeDto dto = Mapper.Map<Employee, EmployeeDto>(employee); 

내 질문은 : Employee(소스 클래스)를 EmployeeDto(대상 클래스)에 매핑하려면 매핑 규칙을 어떻게 지정할 수 있습니까? 다시 말해, 위의 코드 줄 (***)로 어떻게 더 많은 것을해야합니까?


신경 쓰지 마라. 나는 스스로 해결책을 찾았다.

Mapper.CreateMap<Employee, EmployeeDto>()
    .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name));

정말 오래된 스레드이지만 Automapper 8.1 이상을 사용하여 위의 주석을 업데이트 된 접근 방식으로 롤링합니다 ...

var mapConfig = new MapperConfiguration(
   cfg => cfg.CreateMap<Employee, EmployeeDto>()
      .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name))
);

그런 다음 mapConfig를 사용하여 매퍼를 빌드합니다.

var mapper = mapConfig.CreateMapper();

참고 URL : https://stackoverflow.com/questions/14777601/how-to-specify-mapping-rule-when-names-of-properties-differ

반응형