2011-02-28 1 views
0

내가 지금하고있는 것보다 더 나은 방법이있는 것처럼 느껴집니다.데이터베이스 호출이 필요한 경우 Silverlight/RIA에서 유효성 검사를 수행하는 방법?

Silverlight 4, RIA 및 EF (Oracle 어댑터 포함)를 사용하고 있습니다. 레코드를 테이블에 삽입하고 유효성 검사 속성을 사용하여 유효성 검사를 많이하고 있지만 새 레코드를 삽입하기 전에 기존 레코드를 검사하기 위해 DB를 쿼리해야하는 유효성 검사가 있습니다 (이것이 있어야하는 것처럼 보입니다.) 공통적이고 쉬운 요구 사항, 아니요?)

지금 당장은 DomainService에서 Invoke 메서드를 사용하여이 클라이언트 측을 처리하고 있습니다. 이것은 절름발이이자 바보 같다. 그러나 나는 그것이 실제로 속해있는 서버 측을 어떻게 수행하는지 알 수 없다.

이 서버 측을 모두 처리하고 클라이언트에게 유효성 검사 오류를 알리는 방법이 있어야하는 것처럼 보입니다.하지만이 사실을 확실히 파악할 수는 없으며 아무도이 특정 유효성 검사 시나리오에 접근하지 않는 것 같습니다.

+0

안녕, 당신은 SL의 UI와 비즈니스 로직 사이에 다리가 있어야 하나 WCF를 통해 비동기, 이벤트 발생 및 완료된 메소드 처리 또는 RIA 서비스로 처리 할 수 ​​있습니다. 모든 db 상호 작용 로직 및 쿼리/업데이트는 모든 것이 잘되었거나 실패한 경우 UI가 완료된 메소드에서 true 또는 false가된다고 생각하는 것보다 비즈니스 계층에 있어야합니다. –

+0

Davide의 예가 있습니까? 그것은 매우 모호한 대답이기 때문에. 나는 실제 코드를 더 잘 보게된다. –

답변

1

WCF RIA는 서버 측 엔터티에 유효성 검사를 첨부 할 수있는 방법을 제공합니다. 아래에 자세히 설명 된 규칙을 작성하여 규칙 이름을 지정하십시오.

public static partial class FooRules 
{ 
    public static ValidationResult FooIDUnique(Foo foo, ValidationContext context) 
    { 
    bool check = false; 

    using (FooEntities fe = new FooEntities()) 
    { 
     check = fe.Foo.Any(f => f.FooId == foo.fooId); 
    } 
    if (!check) 
     return ValidationResult.Success; 

    return new ValidationResult("FooID error msg,", new string[] { "FooID" }); 
    } 
} 

저는 RIA를 사용하여 유효성 검사 클라이언트와 서버 측을 추가하는 예제 응용 프로그램을 작성했습니다.

here을 다운로드 할 수 있습니다. 나는 특정 항목에 연결하지만,이 스레드를 확인하는 방법을 모르는

+0

Rus를 컴파일하지 않습니다. FooEntities (이름이 바르게 바뀌 었습니다)를 사용하자마자 컴파일시 폭탄이 터집니다. 네임 스페이스가 누락되었다고 알려주지 만 이해가되지 않습니다 ... –

+0

모든 규칙 클래스 클라이언트 또는 서버 측은 물리적으로 클라이언트에 있는지 또는 클라이언트에 있는지에 관계없이 .Web (서버 측) 네임 스페이스에 있어야합니다. 서버 측 프로젝트 그 외에도 여기에 컴파일 오류를 붙여 넣으면 시도해 보겠습니다. – Rus

+0

형식 또는 네임 스페이스 이름 'FooEntities'을 (를) 찾을 수 없습니다 (사용 지침이나 어셈블리 참조가 누락 되었습니까?). 그 부분 수업에서 FooEntities를 시도하자마자 폭탄이 터집니다. 그런 종류의 정적 유효성 검증 방법 (서버 측에 저장 됨)으로 원하는 모든 유형의 엔티티/엔티티 유효성 검사를 수행 할 수 있지만, 엔티티 컨텍스트를 포함 시키려고하면 마 y 가지로 마! –