3
AutoMapper로 설정 한 프로젝트에서 작업 중입니다. 이것의 대부분이 내게 외국적이기 때문에, 나는 왜 그런지에 대해 열린 마음을 지키고있다.Mapper vs Constructor
class Foo
{
public string name { get; set; }
public int rank { get; set; }
public bool isDelected { get; set; }
}
class FooView
{
public string name { get; set; }
public int rank { get; set; }
}
가 대신 ORM을 사용하는 이유를 난 그냥 매개 변수로 FooView를 사용하는 생성자를 사용하지 것이다 :
의 나는 두 개의 클래스가 있다고 가정 해 봅시다. 나는 FooView이 나는 푸 필요할 때마다이 경우
class Foo
{
public Foo(FooView source)
{
this.name = source.name;
this.rank = source.rank;
}
}
난 그냥 그것은 나에게 내가 한 위치에 필요한 모든 논리를주고 내가 어디에서나 사용할 수 있습니다
var myFoo = new Foo(FooView);
을 말한다. 코드를 업데이트해야하는 경우 모델 정의와 동일한 위치에 있습니다. 그래서 나는 무엇을 놓치고 있습니까?
에서 분리를 내 매핑 로직을 유지하는 데 도움이,하지만 당신은 20, 30 또는 그 이상의 특성이 있다면? Automapper는 이름이 일치하면 자동으로이를 매핑합니다. 이것만으로도 모든 구성 오버 헤드가 있습니다. –
[Automapper] (http://automapper.org/)의 장점을 읽은 다음 사용하고 싶다면 스스로 결정해야합니다. automapper의 이점 중 하나는 (* 이보다 훨씬 많은 기능이 있습니다.) 속성이 동일한 서명 (둘 다 public setter/getter가 있어야 함) 인 경우 두 객체에 걸쳐 값을 자동으로 매핑 할 수 있다는 것입니다. 이것은 같은 유형 (복제품과 같음)이거나 다른 유형일 수 있습니다. 특히 비즈니스/데이터 로직 모델과 매우 유사한 많은 뷰 모델이있는 경우 많은 코드를 절약 할 수 있습니다. – Igor
@MattyM이 생각하기에 이것은 큰 개선이 테스트 능력과 일관성이라고 지적했다. AutoMapper 문서의 첫 번째 요점 중 하나는 왜 사용하는지 설명합니다. –