저는 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 및 런타임 또는 컴파일 타임 경고없이 데이터 덮어 쓰기.
이것은 합법적 인 위험입니까? 실행 했습니까? 어떻게 처리 했습니까?
질문은 각 필드에 대해 수동으로 코드를 작성하지 않아도이 위험을 일반적인 글로벌 방식으로 완화 할 수있는 방법입니다. 필드별로 필드를 수동으로 코드화해야하는 경우 Automapper를 사용하여 포인트가 없습니다. –
서버 사이드 코드없이 null 값이 합법적인지 여부를 서버 사이드 코드가 어떻게 알 수 있습니까? 언급 한 시나리오는 모든 유형의 매핑 (수동 또는 자동)으로 발생하므로 매핑 문제보다는 테스트 스위트를 갖는 것이 더 중요합니다. –
합법적 인 널값이 입력 될 수 있습니다. 따라서 널 자체는 문제가 아닙니다. 문제는보기에서 필드를 제거하여 데이터를 쉽게 파기 할 수 있다는 것입니다. 6 개월 후에 버그 보고서 이외의 다른 것을 전혀 알지 못합니다. –