1

EF 5로 업그레이드 한 후 코드의 특정 인스턴스에 Validation failed for one or more entities. See 'EntityValidationErrors' property for more details'이 계속 표시됩니다.Entity Framework 4에서 5로 업그레이드하면 오류가 발생했습니다.

데이터베이스에서 NVARCHAR이 nullable 인 필드가 있고 부분 클래스에서 Data 주석이있는 [Required]가 표시되어 있습니다. 해당 필드는 프로그래밍 방식으로 null로 설정됩니다. 이것은 EF4에서 데이터베이스 모델 (NVARCHAR nullable)에 대해 유효성이 검사 된만큼 정상적으로 작동했습니다.

다른 입력란에도 사용자 입력이 필요하기 때문에 해당 입력란을 [필수]로 표시해야합니다.

내 옵션에는 어떤 것이 있습니까? SaveChanges() 이전에 해당 속성/유효성 검사 오류를 무시할 수 있습니까?

답변

4

엔티티를 뷰에 직접 전달하는 대신 View 모델을 사용하는 것이 좋습니다. 보기 및 데이터 모델에는 서로 다른 요구 사항이 있으며 유효성 검사와 함께 동일한 모델을 사용하려고하면 문제가 발생합니다.

대신 데이터 모델에서 필수 속성을 제거하고 필요로하는 View 모델을 만든 다음 AutoMapper와 같은 것을 사용하여 매핑하십시오.

+0

이미 뷰 모델을 사용하고 있습니다. 나는 단지 두 가지 견해를 가지고 있습니다 : 하나는 다른 분야가 요구하지 않는 분야를 요구합니다. 뷰 모델에서 [필수]를 제거하면. 내 견해 중 하나에 대해이를 시행하려면 어떻게해야합니까? (데이터 주석이 아닌 컨트롤러에 새 유효성 검사 규칙을 추가하십시오.) – James

+0

@James : 뷰 모델을 사용하는 경우 각 뷰마다 다른 유효성 검사가 필요한 별도의 뷰 모델이 있습니다. 그렇지 않은 경우 뷰 모델을 사용하지 않습니다. 적어도 뷰 모델은 올바르게 사용하지 않습니다. 엔티티에 대한 뷰 유효성 검사를위한 데이터 주석은 완전히 오해입니다. –

+0

어쩌면 나는 그것을 정확하게 사용하지 않을 것이다. 튜토리얼에 대한 링크가 있습니까? – James

관련 문제