【发布时间】:2011-08-23 13:20:00
【问题描述】:
我正在做一个从 oracle 数据库读取的项目。我使用了 Silverlight RIA 和自动生成的 DomainService,因为我不太关心结构化,因为我只担心显示数据。
我的问题是,当我使用 XAML 中的 domaindatasource 并使用 fiddler 调试 WCF 服务及其调用时,useraccounts 表中的第一组数据包含 200 万行,并且 DomainService 超时。
现在我尝试将服务的超时时间增加到 20 分钟,但仍然无济于事,我收到错误消息:
查询“GETUA_USERACCOUNTS”的加载操作失败。 http 请求已超过分配的超时时间
在我使用的总共 9 个表中,3 个表有大约 200 万行,解决这个问题的最佳方法是什么?
【问题讨论】:
-
客户端应用永远不需要全部 200 万条记录。您是否在数据显示中添加了分页/过滤?
-
您好,谢谢您,我忘了说我不必显示所有数据,我需要在客户端找到当前记录。一个用户输入一个用户ID,然后我从各个表中提取有关该用户ID的所有信息,3个表有200万行,所以这会导致超时。
-
如果您要立即过滤这些数据,需要将大量数据发送到 Silverlight 客户端应用程序。这听起来像是您想要在服务器端执行的操作,即使它需要 Silverlight 和您的服务端点之间的多个请求。
-
谢谢 avanek,我会按照你说的那样尝试,我可以遵循任何最佳实践或示例来实现这一目标?
-
我对 RIA 不太熟悉(我曾参与过一个只有 Silverlight + WCF 的项目),但在大多数情况下,我发现使用 Repository software pattern 有助于解决此类问题问题。在 WCF 层中创建一个 Getter 方法,该方法接受 UserID 并将返回单个记录而不是整个数据集。
标签: c# silverlight wcf ria domainservices