2010-04-16 71 views
5

我有一個Silverlight 4應用程序,它使用WCF RIA服務從數據庫中拉取實體。這些數據對象非常簡單,只有幾個字段,但其中一個字段包含任意大小的二進制數據。應用程序需要訪問此數據基本上在用戶登錄後,以顯示在列表中,啓用選擇等訪問silverlight/wcf ria中的部分實體加載和管理

我的問題是因爲這個數據的大小,加載時間是不可接受的,可以接近RIA服務的默認超時。

我想以某種方式部分加載對象到我的本地數據上下文,以便我有ID,名稱等,但不是二進制數據。然後,我可以在稍後(即實際需要時)填充需要顯示的對象的二進制字段。

任何有關如何完成此任務的建議都會受到歡迎。

我在寫這個問題時發生的另一種方法(發生這種情況的頻率是多少?!)是我可以將二進制數據移動到一個單獨的數據庫表中,該數據庫表以1:1的原始記錄加入,這將允許我利用RIA對該二進制數據的延遲加載。

再次..評論歡迎!謝謝。

回答

5

不要更改您的數據庫。更改您的送貨方式。

爲您的項目快速列表創建一個單獨的WCF RIA服務,並使用POCO(普通舊clr對象)發送您所需數據的摘要。然後,當您爲大傢伙做好準備時,您可以從POCO的數據中隨時下載一個。

Brad AbramsNikhil Kothari已經討論了使用POCO一段時間。查看他們的MIX演講,瞭解更多信息。

您的快速列表項創建新的服務:

public class QuickListService : LinqToEntitiesDomainService<MyEntities> 
{ 
    private IQueryable<QuickList> GetQuickList() 
    { 
     return from t in ObjectContext.Table 
       select new QuickList 
       { 
         ID = t.ID, 
        Title = t.Title 
       }; 
    } 
} 

你的POCO僅僅是服務器上的對象,像這樣:

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

祝你好運!

p.s. Nikhil的BookClub應用程序做了很多。如果你需要看到一個真正的應用程序這樣做,下載他的應用程序:http://www.nikhilk.net/Content/Presentations/MIX10/BookClub.zip