문제

생성 된 클래스를 모델로 사용하고 있으며 일부 속성에 DataAnnotation 속성을 추가하고 싶습니다. 생성 된 코드이므로 주석을 직접 추가하고 싶지 않습니다. 재산에 첨부하는 또 다른 방법이 있습니까?

나는 모델을 인터페이스로 만드는 것을 고려하고 부분 클래스를 사용하여 생성 된 클래스를 구독하도록했습니다. 그것이 효과가 있다고 가정 할 때 덜 정교한 솔루션이 있습니까?

도움이 되었습니까?

해결책

예가 있습니다. 원래 모델과 동일한 속성을 갖는 메타 데이터 클래스를 만들고 Metadatatype 속성으로 모델에 연결해야합니다.

[MetadataType(typeof(MyModelMetadata))]
public partial class OriginalMyModel
{
}

public class MyModelMetadata
{
    [Required]
    public string MyProperty;  

    // ...
}

예제에서 EBOVE OriginalModel은 적절한 모델 클래스이며 MyModelMetadata는 속성 주석에만 사용되는 클래스입니다. MyModelMetadata는 모델과 동일한 속성을 가져야합니다.

다른 팁

클래스에서 Metadatatype 속성을 사용할 수 있습니다.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

실제로, 나는 메타 데이터가 생성 된 모델과 매우 자주 동기화되는 것을 보았지만, 약간의 두통으로 이어질 수 있습니다. 데이터 주석 대신 대체 검증 메커니즘을 살펴볼 수 있습니다.

나는 사용하고있다 유창한 검증, 픽업하고 사용하기가 매우 쉽습니다. 유창한 검증도 있습니다 xval 클라이언트 측 유효성 검사를 위해 프로젝트를 가져올 수있는 Fluent Validation 2.0 (여전히 베타 버전)의 통합 조각.

유창한 검증을 사용하면 별도의 클래스에서 검증을 정의 할 수 있습니다. 당신이해야 할 일은 생성 된 클래스에 속성을 추가하여 어떤 유효성 검사기를 사용할 것인지, 이는 부분 클래스를 통해 달성 될 수 있습니다.

또는 데이터 주석이 포함 된 도메인 모델에서 매핑 된 뷰 특정 모델을 만들 수 있습니다. 이 경우와 같은 것을 사용하여 앞뒤 매핑을 단순화하십시오. automapper. 그런 다음 도메인 모델이 변경되면 메타 데이터 접근 방식에 비해 컴파일 타임 오류가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top