클래스 맨 위에 MetadataType 태그를 사용하여 사용자 정의 클래스 (LINQ에서 SQL로 자동 생성 됨)의 유효성 검사에 DataAnnotations를 사용하고 있습니다. 나는 DataAnnotations를 좋아하고 간단하고 일반적인 시나리오에서 잘 작동합니다. 예 :ASP.Net MVC2 DataAnnotations를 사용하여 동일한 클래스의 두 ViewModels을 다르게 확인합니다.
[MetadataType(typeof(Person_Validation))]
public class Person
하지만 서로 다른 시나리오의 클래스에 적용 유효성 검사 규칙의 두 개의 서로 다른 세트를해야하는 경우 ???
내 상황 : 일부 공개는 www 공개 사이트에서 필수 항목이지만 내부 관리 사이트에서는 필수 항목이 아닙니다. 그러나 두 사이트 모두 동일한 객체/클래스의 "새로 만들기"뷰가 있습니다.
이 DataAnnotations 지옥은 표면이된다 곳입니다.. 내가 그들 각각에 적용되는 다른 유효성 검사 두 개의 서로 다른 ViewModels, 다른 유효성 검사가 그들 각각에 적용하여 사람에서 상속이 개 클래스를 사용하려고했습니다
. 그러나 모든 길은 DRY 교장과 충돌하는 것처럼 보입니다. 그러면 기본 클래스 구조에 대한 모든 속성을 완전히 재 지정하는 선상의 어떤 곳에서 끝납니다. 유효성 검사 규칙 집합을 하나만 가질 때이 작업을 수행 할 필요가 없습니다. 따라서 매우 빠르게 지옥이되어 복잡한 물건에는 실용적이지 않습니다.
DataAnnotations를 사용하면 이것이 가능하며 가장 좋은 DRY 아키텍처는 무엇입니까?
내가 같은 결론에 도착을 AutoMapper가 참여해야 할 필요가 있지만, 내가 틀렸 으면 좋겠다. 이 문제는 "편집"보기를로드 할 때 발생합니다. 에서 id 매개 변수를 읽은 다음보기로 전달하기 전에 편집해야하는 객체를 가져옵니다. 이 때, 가져온 객체를 기반으로 ViewModel 내부의 값을 어떻게 든 설정해야합니다. 여기서 모든 경로가 AutoMapper 대신 지옥으로 연결됩니다. 이 전체 아키텍처가 두 개의 서로 다른 유효성 검사 규칙 집합을 사용하여 완벽하게 작동하도록 만들 수 있지만 검색된 개체의 값을 편집 용으로 설정하면 문제가 발생합니다. – Aaron
그러나 automapper를 사용하고 싶지 않은 이유는 무엇입니까? - 사용하기 쉽고 사용하기 쉬운이 시나리오에 완벽합니다. 거기에 있다는 것을 거의 잊을 수 있습니다. – UpTheCreek
나는 그것을 사용하는 것에 의지 할 것이고 당신의 매우 중요한 점을 고맙게 생각할 것이다. 그러나 나는 내 시스템에 가져 오는 외부/추가 구성 요소의 수를 최소화하려고 노력하고있다. 경험에서 3 년 추적, 갑자기 ASP 아래로.닷넷 MVC10이 출시되고 오토 마퍼의 실제 버전과 기타 애드온 DLL을 실행하기 때문에 전체 솔루션이 빌드되지 않습니다. 내 첫 환경 설정은 항상 원래 도구를 사용하기 전에 열심히 노력하는 것입니다 부가 기능. 일반적으로 추가 기능이 많을수록 안정성이 낮아지고 향후 유지 관리가 향상됩니다. – Aaron