silverlight / wcf ria中的部分实体加载和管理

时间:2010-04-16 13:08:58

标签: silverlight wcf-ria-services

我有一个Silverlight 4应用程序,它使用WCF RIA服务从数据库中提取实体。这些数据对象相当简单,只有几个字段,但其中一个字段包含任意大小的二进制数据。应用程序需要在用户登录后基本上尽快访问此数据,在列表中显示,启用选择等。

我的问题是因为这些数据的大小,加载时间是不可接受的,并且可以接近RIA服务的默认超时。

我想以某种方式将对象部分加载到我的本地数据上下文中,以便我拥有ID,名称等但不包含二进制数据。然后我可以在稍后(即实际需要时)填充我需要显示的那些对象的二进制字段。

欢迎任何关于如何实现这一目标的建议。

我在写这个问题时遇到的另一种方法(这种情况多久发生一次?!)是我可以将二进制数据移动到一个单独的数据库表中,该数据库表连接到原始记录1:1,这将允许我制作使用RIA对该二进制数据的延迟加载。

再次..评论欢迎!感谢。

1 个答案:

答案 0 :(得分: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