问题: 我正在开发一个 Silverlight 应用程序,并且我正在将大量数据加载到 DomainContext 中,即来自 Web 服务。它开始运行几个不同的查询,BusyIndicator 显示当前查询,但是当它到达具有最多数据的查询时,它会冻结。几分钟后,它说服务器没有响应下一个查询。
调试/尝试的解决方案: 当我加载较少的数据时系统工作。我假设它超时,这就是为什么它说下一个查询不存在,即它甚至无法联系网络服务。我环顾了一会儿,人们建议增加超时和最大结果大小。这些已经解决了其他问题,所以我知道它们有效(即它们正在被应用),但它并没有解决这个问题。
我尝试隔离问题以确保它不是与加载数据无关的其他愚蠢问题。从 Web 服务中的查询函数返回时会出现问题(返回结果;见下文),即 Web 服务本身应该没有问题。所以两个调试打印都执行了,第二个说 2726 个元素。
网络服务代码:
public IQueryable<Person> GetPeopleWithSubscription()
{
Debug.WriteLine("Before");
IQueryable<Person> result = test();
Debug.WriteLine("After " + result.Count().ToString());
return result;
}
private IQueryable<Person> test()
{
return this.ObjectContext.People.Where(p =>
p.Subscriptions.Count > 0 ||
p.Subscriptions1.Count > 0 ||
p.ID < 0);
}
调用代码:
...
_context.Load(_context.GetSubscriptionTypesQuery(), DataLoaded, false);
...
此外,问题似乎出在客户端,因为旧客户端(即在问题发生之前)仍然可以与新服务器一起使用。但是,自从问题发生以来,我一直在查看存储库中的差异,但我找不到任何应该有所作为的东西(不是说它不存在)。
谁能帮我解决这个问题?如果您需要更多信息,请告诉我。