問題: Silverlight アプリケーションで作業していて、大量のデータを DomainContext に、つまり Web サービスからロードしています。現在のクエリを表示する BusyIndicator を使用して、いくつかの異なるクエリの実行を開始しますが、データが最も多いクエリに到達するとフリーズします。数分後、サーバーが次のクエリに応答しないと表示されます。
デバッグ/試みられた解決策: ロードするデータが少ないと、システムは機能します。タイムアウトになったと思います。そのため、次のクエリが存在しない、つまり、Web サービスに接続することさえできないと表示されます。しばらく見回したところ、人々はタイムアウトと最大結果サイズを増やすことを提案しました。これらは他の問題を解決したので、それらが機能すること (つまり、適用されていること) はわかっていますが、この問題は解決しません。
データの読み込みとは関係のない他のばかげた問題ではないことを確認するために、問題を切り分けようとしました。問題は、Web サービスのクエリ関数から戻るときに発生します (以下のreturn result; )。つまり、Web サービス自体に問題はないはずです。したがって、両方のデバッグ出力が実行され、2 番目の出力には 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);
...
また、古いクライアント (つまり、問題が発生する前) は新しいサーバーでも動作するため、問題はクライアント側にあるようです。ただし、問題が発生してからリポジトリの差分を調べてきましたが、違いを生むものは何も見つかりません (存在しないとは言いません)。
誰でもこの問題を解決できますか? さらに詳しい情報が必要な場合は、お知らせください。