AutoMapper란?

AutoMapper는 겉보기에는 복잡해 보이는 문제――한 객체를 다른 객체에 수동으로 매핑하는 작업――를 해결하기 위한 작고 단순한 라이브러리입니다. 이러한 속성 대입 코드는 반복적이고 지루하기 마련인데, AutoMapper는 객체 매핑을 자동화하는 도구입니다.

객체-객체 매퍼: 한 타입의 입력 객체를 다른 타입의 출력 객체로 변환합니다.

AutoMapper에는 일련의 규약이 내장되어 있어, 대상 클래스가 명명 규약을 따르기만 하면 두 타입 간의 매핑을 거의 제로 구성으로 완료할 수 있습니다.

매핑 코드를 손으로 작성하는 것은 지루하고, 이를 테스트하는 것은 더욱 지루합니다. AutoMapper는 간단한 타입 구성을 제공하며, 매핑 로직에 대한 단위 테스트도 지원합니다.

설치

NuGet 패키지 관리자 콘솔을 통해 설치

PM> Install-Package AutoMapper

관련 확장 패키지

  1. AutoMapper.Data: ADO.NET 지원, IDataReader에서 데이터를 읽어 매핑 가능
  2. AutoMapper.EF6: EF6용 확장 메서드, 비동기 ProjectTo 프로젝션 제공
  3. AutoMapper.Collection: 컬렉션 동등성 매핑, 두 컬렉션을 비교하고 객체 동등성 검사 지원
  4. AutoMapper.Collection.EF: EF 기본 키와 결합하여 동등성 판별, 컬렉션의 추가/수정/삭제 자동 처리, DTO 컬렉션에서 데이터베이스 엔티티 컬렉션으로의 영속화 작업 구현

기존의 수동 객체 대입 예제

People(소스)와 Person(대상) 두 클래스가 있으며, 속성 이름이 완전히 동일함

class People
{
    public int Age { set; get; }
    public string Name { set; get; }
}

class Person
{
    public int Age { set; get; }
    public string Name { set; get; }
}Code language: JavaScript (javascript)

기존 방식: 속성을 하나씩 수동으로 대입:

static void Main(string[] args)
{
    People p = new People() { Age = 13, Name = "Jack" };
    Person person = new Person();

    // 각 속성을 수동으로 복사. 속성이 많으면 코드가 매우 장황해짐
    person.Name = p.Name;
    person.Age = p.Age;

    Console.WriteLine(person.Name);
    Console.WriteLine(person.Age);
    Console.ReadKey();
}Code language: JavaScript (javascript)

단점: 속성이 많을수록 반복되는 대입 코드가 늘어남. 필드를 추가하거나 수정할 때 모든 대입 코드를 함께 수정해야 하며, 놓치기 쉬워 버그가 발생할 수 있음.

AutoMapper의 역할: 위와 같이 xxx.속성 = yyy.속성을 일일이 작성하는 대신, 규약에 따라 동일한 이름의 속성을 자동으로 복사함.

AutoMapper란?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다