애플리케이션을 만들어 보다 보면 아주 많은 클래스들을 만들게 되는데요, 데이터베이스 (Entity Framework) 나 Web Api를 이용하다 보면 소스 클래스에서 애플리케이션에 이용할 다른 클래스로 Conversion과 Mapping을 해야 하는 경우가 종종 있습니다. 하지만 거의 Property 이름이 같은 경우가 많죠.
Automapper는 생성된 클래스와 생성하려고 하는 클래스가 비슷할 시에 쉽게 단 몇 줄로 Conversion과 Mapping을 해주는 툴입니다.
Visual Studio의 Package Manager에서 바로 아래 커멘드로 프로젝트에 설치를 할 수 있습니다
Install-Package AutoMapper
아니면 NuGet에서 다운로드하여 설치할 수 있습니다.
우선 아래의 예제와 같이 mapper configuration을 생성합니다. configuration을 사용하여 매핑을 하고 새 클래스를 만듭니다.
예제는 Order 클래스를 OrderDto 클래스로 컨버젼 및 매핑을 하는 코드입니다.
var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>());
var mapper = new Mapper(config);
OrderDto dto = mapper.Map<OrderDto>(order);
하지만 대부분의 케이스가 클래스에 속한 Property 이름이 다른 경우가 많죠. 위의 예제는 모두 같은 경우이고 아래는 링크 (LINQ) 함수를 이용하여 다른 이름들을 configuration 생성 시 매핑을 하는 코드입니다.
var config = new MapperConfiguration(
cfg => cfg.CreateMap<Order, OrderDto>().ForMember(
dest => dest.OrderName,
opt => opt.MapFrom(src => src.OrderTitle)));
var mapper = new Mapper(config);
OrderDto dto = mapper.Map<OrderDto>(order);
위의 코드는 OrderDto 가 OrderName이라는 Property를 가지고 있지만 Order 클래스에선 같은 Property 가 이름이 OrderTitle이라고 다를 경우 OrderName을 OrderTitle에 매핑하고 있습니다. 그렇게 되면 OrderDto의 OrderName는 Order 클래스의 OrderTitle 이 가지고 있는 데이터로 매핑이 됩니다.
간단하지요? 수고하셨습니다.
도움이 되셨거나 즐거우셨다면 아래의 ❤️공감버튼이나 구독버튼을 눌러 주세요~ 감사합니다
https://docs.automapper.org/en/latest/Getting-started.html
쿠버네티스 (Kubernetes)에서 프로메테우스 (Prometheus) 와 그라파나 (Grafana) 설치 - 완결편 - PART 1 (0) | 2022.12.19 |
---|---|
Table-Valued Function (TVF) - T-SQL (0) | 2022.12.12 |
Azure AKS (에저 쿠버네티스 서비스) 에서 Prometheus (프로메테우스) 와 Grafana (그라파나) 설치 - Powershell (0) | 2022.12.02 |
모든 환경에서 사용가능한 JavaScript (자바스크립트) 팝업 창 코드 (0) | 2022.12.02 |
.NET gRPC 서버 제작과 gRPC-Web 기능 넣기 (0) | 2022.11.28 |