상세 컨텐츠

본문 제목

AutoMapper (오토매퍼) 사용법 - C# & .NET

본문

애플리케이션을 만들어 보다 보면 아주 많은 클래스들을 만들게 되는데요, 데이터베이스 (Entity Framework) 나 Web Api를 이용하다 보면 소스 클래스에서 애플리케이션에 이용할 다른 클래스로 Conversion과 Mapping을 해야 하는 경우가 종종 있습니다. 하지만 거의 Property 이름이 같은 경우가 많죠.
 

반응형

https://automapper.org/

 

AutoMapper

What is AutoMapper? AutoMapper is a simple little library built to solve a deceptively complex problem - getting rid of code that mapped one object to another. This type of code is rather dreary and boring to write, so why not invent a tool to do it for us

automapper.org


Automapper는 생성된 클래스와 생성하려고 하는 클래스가 비슷할 시에 쉽게 단 몇 줄로 Conversion과 Mapping을 해주는 툴입니다.


설치방법

Visual Studio의 Package Manager에서 바로 아래 커멘드로 프로젝트에 설치를 할 수 있습니다

Install-Package AutoMapper

아니면 NuGet에서 다운로드하여 설치할 수 있습니다.
 

728x90

사용방법

우선 아래의 예제와 같이 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

 

Getting Started Guide — AutoMapper  documentation

What is AutoMapper? AutoMapper is an object-object mapper. Object-object mapping works by transforming an input object of one type into an output object of a different type. What makes AutoMapper interesting is that it provides some interesting conventions

docs.automapper.org

 

728x90
반응형

관련글 더보기