2014-01-06 2 views
0

저는 MVC ASP.NET 프로젝트에서 AutoMapper를 사용하여 내 도메인 모델을 내 뷰 모델에 매핑하기 시작했습니다. 예.Automapper 관심사 -보기에서 속성을 제거하지만 viewmodel을 제거하지 않으면 어떻게됩니까?

public class PersonModel 
{ 
    public string FirstName { get; set; } 

    public string NickName { get; set; } 

    public string LastName { get; set; } 

    public DateTime BirthDate { get; set; } 
} 

public class PersonViewModel 
{ 
    public string FirstName { get; set; } 

    public string NickName { get; set; } 

    public string LastName { get; set; } 

    public DateTime BirthDate { get; set; } 
} 

// Somewhere... 
Mapper.CreateMap<PersonModel, PersonViewModel>(); 
Mapper.CreateMap<PersonViewModel, PersonModel>(); 

가이 패턴을 채택하는 데, 나는 다음과 같은 시나리오가 미래에 일어나는 걱정 : 모든 배 속성 편집기를 보여주는

1) 개발자 A가 사람 뷰를 작성

2) 개발자 B 이상 PersonviewModel에서 "Nickname"편집기를 제거하지만 PersonViewModel에 남음

3) Nickname 값은 View에서 보존되지 않으므로 저장시 제출되므로 Automapper는 PersonViewM에서 "Nickname"에 대한 Null 값 매핑을 시작합니다 odel -> PersonModel 및 런타임 또는 컴파일 타임 경고없이 데이터 덮어 쓰기.

이것은 합법적 인 위험입니까? 실행 했습니까? 어떻게 처리 했습니까?

답변

1

서버 측 유효성 검사와 자동화 된 종단 간 테스트를 통해 이러한 위험을 완화 할 수 있습니다.

예에서 테스트 중 하나는 '닉네임에 값이 있어야합니다'라는 사람을 저장하는 것입니다.

+0

질문은 각 필드에 대해 수동으로 코드를 작성하지 않아도이 위험을 일반적인 글로벌 방식으로 완화 할 수있는 방법입니다. 필드별로 필드를 수동으로 코드화해야하는 경우 Automapper를 사용하여 포인트가 없습니다. –

+1

서버 사이드 코드없이 null 값이 합법적인지 여부를 서버 사이드 코드가 어떻게 알 수 있습니까? 언급 한 시나리오는 모든 유형의 매핑 (수동 또는 자동)으로 발생하므로 매핑 문제보다는 테스트 스위트를 갖는 것이 더 중요합니다. –

+0

합법적 인 널값이 입력 될 수 있습니다. 따라서 널 자체는 문제가 아닙니다. 문제는보기에서 필드를 제거하여 데이터를 쉽게 파기 할 수 있다는 것입니다. 6 개월 후에 버그 보고서 이외의 다른 것을 전혀 알지 못합니다. –