저는 Asp.Net의 DRY 교장에게 MVC가 매우 중요하다고 들었습니다. 가능하면 ViewModel에서 [Required] 및 [Display (Name = "Shuttle Name")]와 같은 엔티티 속성 속성을 반복하지 말아야한다는 내용도 들었습니다.MVC : DRY vs WET
나는 또한 데이터, 비즈니스 및 프리젠 테이션 레이어 간의 분리가 중요하다고 들었다. 그래서 [ProjectName.Entity 프로젝트의 엔티티에 [Display]와 같은 속성이있는 이유가 궁금합니다. 프리젠 테이션 레이어가 존재하지 않는 데이터 레이어에 대한 아이디어를 좋아합니다. 나는 개인적으로 내 데이터 레이어에 디스플레이 정보가없고 내 프레젠테이션 레이어의 컨트롤에 직접 매핑 된 데이터 엔티티가없는 것을 선호합니다.
예 :
private readonly Shuttle shuttle;
public ShuttleViewModel() { this.shuttle = new Shuttle(); }
public ShuttleViewModel(Shuttle shuttle)
{
this.shuttle = shuttle;
}
[Required]
[Display(Name = "Shuttle Name")]
public string ShuttleName
{
get { return this.shuttle.Name; }
set { shuttle.Name = value; }
}
난이 엔티티 클래스에 이미있는 뷰 모델의 속성을 반복 할 수 있다는 것을 깨닫게 : 표시하거나 편집을 요구하는 속성 중 하나에 대한 개인 셔틀 개체 속성 및 공용 속성을 포함하는 간단한 뷰 모델을 사용하여 수동으로 데이터를 매핑하지만 경험을 통해 나는 매번 작동한다는 것을 발견했습니다. 복잡한 엔티티가 ViewModel에 uber-mapped 될 때 발생하는 끔찍한 비 직관적 인 예외도 보았습니다. 그래서 나는 DRY vs Wet에 대한 약간의 피드백을 좋아할 것입니다.
왜 질문을 보류합니까? 나는 여기에 모범 사례를 요구하고있다! 나는 DRY가 ViewModels에 가능한 한 가깝게 바인딩 엔터티를 의미하는지 묻습니다. – Jamie