問題: 我正在使用Silverlight應用程序,並且正在將大量數據加載到DomainContext中,即從Web服務中加載。它開始運行幾個不同的查詢,BusyIndicator顯示當前查詢,但是當它到達數據最多的查詢時,它會凍結。幾分鐘後,它表示服務器不響應下一個查詢。Silverlight在加載DomainContext數據時出現死機
調試/嘗試的解決方案: 當我加載較少的數據時,系統工作。我假設它超時了,這就是爲什麼它說下一個查詢不存在,即它甚至不能聯繫web服務。我環顧四周,人們建議增加超時和最大結果大小。這些解決了其他問題,所以我知道它們的工作原理(即它們正在被應用),但它不能解決這個問題。
我試着隔離問題,以確保它不是一些其他與加載數據無關的愚蠢問題。從Web服務中的查詢功能返回時出現問題(返回結果;下面的),即Web服務本身不應該存在問題。因此這兩個調試打印都被執行,第二個打印2726個元素。
Web服務代碼:
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);
...
而且,這個問題似乎是在客戶端,因爲舊的客戶端(即在問題發生之前)仍然有效與新的服務器。但是,自從發生問題以來,我一直在研究存儲庫中的差異,我找不到任何應該有所作爲的東西(並不是說它不存在)。
任何人都可以幫我解決這個問題嗎?如果您需要更多信息,請告訴我。