2011-10-26 1 views
0

WCF 서비스를 통해 데이터에 액세스하는 ASP.NET MVC3 응용 프로그램을 구현합니다. WCF 서비스는 엔터티에 대해 DBContext 및 POCO 클래스를 사용하여 데이터 액세스를 위해 EF4.1을 사용합니다. 서버 측의 데이터 유효성 검사 속성에 속성에 주석을 달고 사용자 지정 유효성 검사 특성 (ValidationAttribute에서 파생 됨)을 정의하거나 IValidatableObject을 구현하여 사용자 지정 유효성 검사를 구현할 수 있습니다.WCF 서비스 (EF4 데이터 처리 사용)에서 MVC3 클라이언트로 유효성 검사 결과를 전달하는 접근 방식

하지만 문제가 있습니다. 유효성 검사가 실패하면 WCF의 유효성 검사 오류 정보를 클라이언트에 전달하고 MCV3 클라이언트에서 사용하는 가장 좋은 방법은 무엇입니까?

WCF에서 알 수 있듯이 클라이언트와 WC 서비스간에 교환되는 모든 데이터는 데이터 계약의 일부 여야하며 추가 속성이 설정된 ValidationException을 throw하는 것처럼 서버와 클라이언트간에 의미있는 정보를 전달하는 방법으로 예외를 사용하지 않아야합니다. 검증 실패 정보).

또한 EF를 사용하는 WCF에서 dbContext.SaveData()를 호출하지만 데이터가 유효하지 않은 경우 예외가 발생하지만 원하지 않습니다.

그래서 :

  1. 은 어떻게 명시 적으로 EF 유효성 검사를 호출 할 수 있습니다와) 개체 중 하나가 유효하고 내가 위해 SaveData를 (호출 할 수 있는지 확인하거나 객체가 잘못하고 어떻게 든 검증 오류 정보를 수집 할 수 있습니다 고객에게 전달해야합니다.

  2. Haw 데이터 검증 계약의 일환으로이 유효성 검증 실패 정보를 다시 클라이언트에 전달할 수 있으며 예외는 아닙니다.

감사

답변

1

당신은 두 가지 방법 사용할 수 있습니다

  • 사용 표준 응답 데이터 성공을위한 계약 및 검증 실패 FaultException<YourFaultContract>fault contract을. 유형화 된 오류 예외는 "예상 된"예외를 정의하는 방법입니다. SOAP 오류에서 전달 된 또 다른 데이터 계약으로 오류를 설명합니다.
  • 결과 코드, 응답 데이터, 실패 메시지 등을 포함하는 응답 데이터 계약을 생성하고이 데이터 계약을 성공과 실패 모두에 사용하십시오. 이 방법이 맘에 들지 않지만 오류가 특별한 방식으로 처리되는 ESB에서는 사용하기가 더 쉽습니다.
+0

감사합니다. 하지만 어떻게 SaveData()를 호출하지 않고 WCF/EF에서 엔티티의 유효성을 검사 할 수 있습니까? 아니면 EF의 dataContext.SaveData()가 예외를 throw 할 때 유효성 검사 실패 정보로 MyFaultContract를 채울 수 있습니까? 어떤 코드 스 니펫이나 관련 기사 링크는 나를 도울 수 있습니다 :) – bzamfir

+0

MSDN에서 참조한 기사에 코드 스 니펫이 포함되어 있습니다. 데이터 저장을 호출 할 때 유효성 검사 예외를 catch하고 오류 계약을 준비하고 새로운 FaultException을 throw합니다. –