0

WCF RIA 서비스를 처리 할 때 서버에 비즈니스 규칙을 적용 할 수 있다고 읽었지 만, 내가 무엇을 성취 할 수 있는지에 대해서는 손실이 있습니다. 기본적으로 내가 가지고있는 것은 암호화 된 데이터베이스에 저장된 문자열입니다. 해당 열을 반환하는보기가 있고 암호화되지 않은 클라이언트로 반환 할 싶습니다. 나는 표준 DomainService이 방법을 얻기가WCF RIA 쿼리를 통해 반환되기 전에 서버에서 문자열에 대해 사후 처리를 수행합니까?

public IQueryable<qry_ClientList> GetQry_ClientList(Guid Key) 
    { 
     return this.ObjectContext.qry_ClientList.OrderBy(p => p.ClientCode); 
    } 

누군가가 반환되기 전에 내가 그 필드에 해독 함수를 호출 할 방법을 올바른 방향으로 날 지점 수 있습니까? 나는 서버에서가 아니라 코드에서이 작업을 수행해야하는 이유가 있지만 여기서는 다루지 않습니다.

public IQueryable<qry_ClientList> GetQry_ClientList(Guid Key) 
{ 
    List<qry_ClientList> clients = 
     this.ObjectContext.qry_ClientList.OrderBy(p => p.ClientCode).ToList(); 
    foreach (qry_ClientList c in clients) { 
     Decrypt(c); 
    } 
    return clients.AsQueryable; 
} 
+0

정말 전체 컬렉션을 후 처리해야합니까? 메소드 서명 (사용되지 않은 매개 변수'Guid key')에서'IQueryable 대신 하나의'qry_ClientList' 엔티티 만 리턴해야합니다. –

+0

@ JozefBenikovský 사용되지 않은 매개 변수는 인증 키입니다. 이 시스템은 매우 오래된 사용자 정의 인증 시스템과 관련이 있습니다. 간단하게하기 위해 코드를 사용했지만 매개 변수를 제거하는 것을 잊었습니다. – cost

답변

0

는 반환하기 전에 된 IQueryable로 다시 목록을 변환 함수를 실행, 먼저 목록에 실체를 구체화

public override System.Collections.IEnumerable Query(QueryDescription queryDescription, out IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> validationErrors, out int totalCount) 
{ 
    IEnumerable result = base.Query(queryDescription, out validationErrors, out totalCount); 

    // now you have collection with all client query operators applied and 
    // you can apply post-processing 
    if (queryDescription.Method.Name == "GetQry_ClientList") 
    { 
     result.OfType<qry_ClientList>().ToList().ForEach(c => Descrypt(c)); 
    } 

    return result; 
} 
0

당신은 다음과 같이 DomainService.Query() 메소드를 재정 의하여 후 처리 작업을 수행 할 수 있습니다 :