2010-08-18 3 views
0

우리는 사용자 지정 데이터 액세스 레이어를 사용하여 데이터베이스에서 도메인 개체 (고객, 주문 등)를 읽습니다. 이 데이터 액세스 계층은 페이징 또는 정렬을 지원하지 않습니다.사용자 지정 데이터 레이어가있는 RIA 호출

우리는 WCF RIA Services를 사용하여 Silverlight 클라이언트에 데이터의 일부 (예 : 고객)를 게시하려고합니다. 클라이언트에서는 페이징을 사용하여 데이터 격자를 표시하려고합니다.

지금, 우리의 RIA DomainService에, 우리는이 기능은 데이터베이스에서 모든 고객 레코드를 읽 같은

IQueryable<Customer> GetCustomers() 
{ 
    List<Customer> customers = OurPersisteceLayer.GetAllCustomers(); 
    return customers.AsQueryable() 
} 

같은 기능을해야합니다. 이 시나리오에서는 RIA가 서버 쪽 페이징을 수행 할 수 없다고 가정합니다. 함수가 호출 될 때 항상 모든 고객을 읽습니다.

내 질문은 :

윌 RIA는 클라이언트의 고객 목록을 캐시 (한 번만 GetCustomers 전화), 또는 동작마다 데이터 그리드에서 다음 페이지로 사용자의 움직임을 실행합니다?

필자의 시나리오에서, 작업을 수행하는 데 5 초가 걸릴 수 있습니다. 한 번 완료되면 5 초가 걸릴 수 있지만 데이터 그리드의 새 페이지로 이동할 때마다 5 초가 걸리지는 않습니다.

RIA를 사용하여 기존 데이터 액세스 계층에 액세스 할 때 사용할 수있는 좋은 해결책/패턴/방법이 있습니까? 페이징을 사용하고 싶습니까?

답변

0

페이징을 위해 클라이언트 측에서 DomainDataSource를 사용한다고 가정합니다. 기본적으로 IQueryable에 SkipTake을 호출합니다. 그래서 내 직감은 항상 각 고객이 GetCustomers으로 전화를 할 때마다 각 페이지 작업을 통해 매번 모든 고객을 확보하게되기 때문입니다. DDS는 SkipTake에 대한 호출이 LINQ 쿼리로 작성되어 궁극적으로 데이터 소스 자체에서 수행된다고 가정합니다.