我有一个 Silverlight 4 应用程序,它使用 WCF RIA 服务从数据库中提取实体。这些数据对象相当简单,只有几个字段,但其中一个字段包含任意大小的二进制数据。应用程序基本上需要在用户登录后尽快访问这些数据,以在列表中显示、启用选择等。
我的问题是由于该数据的大小,加载时间不可接受并且可能接近 RIA 服务的默认超时。
我想以某种方式将对象部分加载到本地数据上下文中,以便我拥有 ID、名称等,但没有二进制数据。然后,我可以在稍后(即实际需要时)填充我需要显示的那些对象的二进制字段。
任何有关如何实现这一目标的建议都将受到欢迎。
我在写这个问题时想到的另一种方法(这种情况多久发生一次?!)是我可以将二进制数据移动到一个单独的数据库表中,与原始记录 1:1 连接,这将允许我利用 RIA延迟加载该二进制数据。
再次..欢迎评论!谢谢。
不要更改您的数据库。更改您的送货方式。
为您的快速项目列表创建单独的 WCF RIA 服务,并使用 POCO(普通旧 clr 对象)发送所需数据的摘要。然后,当您准备好迎接大家伙时,您可以根据 POCO 的数据触发一次下载一个。
布拉德·艾布拉姆斯 http://sessions.visitmix.com/MIX09/T40F and 尼基尔·科塔里 http://live.visitmix.com/MIX10/Sessions/CL09已经讨论过使用 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;
}
祝你好运!
附注Nikhil 的 BookClub 应用程序经常这样做。如果您需要查看执行此操作的真实应用程序,请下载他的应用程序:http://www.nikhilk.net/Content/Presentations/MIX10/BookClub.zip http://www.nikhilk.net/Content/Presentations/MIX10/BookClub.zip
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)