2010-04-16 1 views
5

WCF RIA 서비스를 사용하여 데이터베이스에서 엔티티를 끌어내는 Silverlight 4 앱이 있습니다. 이러한 데이터 객체는 매우 단순하고 소수의 필드 만 포함하지만 그 중 하나는 임의 크기의 이진 데이터를 포함합니다. 응용 프로그램은 기본적으로 사용자가 로그인하고 목록에 표시하고 선택을 활성화 한 후이 데이터에 대한 액세스가 필요합니다.실버 라이트/wcf 리아 부분 엔티티 로딩 및 관리

이 데이터의 크기 때문에로드 시간이 허용되지 않고 접근 할 수 있습니다. RIA 서비스의 기본 시간 초과입니다.

어떻게 든 부분적으로 내 로컬 데이터 컨텍스트에 개체를로드하여 ID, 이름 등은 있지만 이진 데이터는 가지지 않습니다. 그런 다음 나중에 필요할 때 (실제로 필요할 때) 표시 할 객체의 이진 필드를 채울 수 있습니다.

이 작업을 수행하는 방법에 대한 제안 사항은 언제든지 환영합니다.

이 질문을 쓰는 동안 나에게 일어난 또 다른 접근법 (얼마나 자주 발생합니까?!)은 원본 레코드 1 : 1에 결합 된 별도의 데이터베이스 테이블로 이진 데이터를 이동할 수 있다는 것입니다. 바이너리 데이터에서 RIA의 느린 로딩을 사용하십시오.

다시 의견 환영합니다! 감사.

답변

5

데이터베이스를 변경하지 마십시오. 배송 방법을 변경하십시오.

빠른 항목 목록을위한 별도의 WCF RIA 서비스를 만들고 POCO (일반 오래된 clr 개체)를 사용하여 필요한 데이터 요약을 보냅니다. 그런 다음 큰 사람을위한 준비가되면 POCO의 데이터로 인해 한 번에 하나씩 다운로드 할 수 있습니다.

Brad AbramsNikhil Kothari은 잠시 동안 POCO를 사용하는 것에 대해 이야기 해 왔습니다. 자세한 정보는 MIX 연설을보십시오.

는 빠른 목록 항목에 대한 새로운 서비스를 만들기 :

귀하의 POCO 단순히이 같은 서버의 오브젝트입니다
public class QuickListService : LinqToEntitiesDomainService<MyEntities> 
{ 
    private IQueryable<QuickList> GetQuickList() 
    { 
     return from t in ObjectContext.Table 
       select new QuickList 
       { 
         ID = t.ID, 
        Title = t.Title 
       }; 
    } 
} 

:

public class QuickList 
{ 
    public string Title; 
    public long ID; 
} 

행운을 빕니다!

p.s. Nikhil의 BookClub 앱이이 작업을 많이합니다. 실제 응용 프로그램을보고 싶다면 그의 앱을 다운로드하십시오 : http://www.nikhilk.net/Content/Presentations/MIX10/BookClub.zip