LinqToEntitiesDomainService<FOOEntities>から派生したドメインサービスがあります
IQueryable <Bar> GetBar()という1つのメソッドがあります。GetBarは、エンティティモデルに対するLINQクエリを返します。LINQはLINQPadで正常に動作します。
SilverlightのXAMLには、ItemsSourceがdsGetBarという名前の同じXAMLファイルで定義されたDomainDataSourceを指すListBoxがあります。dsGetBarのAutoLoad="True"。dsGetBarのLoadedDataイベント用の空のハンドラーがあります。
私はこれをVS2010で実行します。WebDev.WebServerプロセスとブラウザーインスタンスの両方に接続してページをロードすると、GetBar()とLoadedDataハンドラーでブレークポイントに到達します。このことから、私は楽観的にサービスがクライアントによって呼び出されていると推測します。
GetBar()で、queryresults.Countを呼び出します。これは24,000を返し、変更します。私のメソッドは、例外をスローせずに正常に戻ります。
だからここに問題があります:
LoadedDataでは、dsGetBar.Data.Count==0です。リストボックスにアイテムが表示されることはありません。ListBoxアイテムテンプレートが壊れた場合は、代わりにDataGridで試してみました。同じ取引。
データはデータがあるべき場所にありますか?そうでない場合、どこですか?ItemsSourceは、アイテムのソースをコントロールに提供するときに使用する正しいプロパティですか?
サービスとクライアントの間で何が起こっているかを知るための既知の方法はありますか?
アップデート
クエリメソッドが正常に完了した後、サービスは504( "ReadResponse()が失敗しました:サーバーはこの要求に対する応答を返しませんでした。")を返します。
アップデート
レコード数が65,535を超えたため、504が発生しました。LINQのwhere句を通過したのはわずか24,000奇数(where句なしでは74,000)であるため、これはワイヤを通過できるものの制限でさえありません。ばかげている。その数は微視的です。
私たちが学んだことは、EntityFrameworkはまだソフトウェアで使用する準備ができていないということだと思います。
アップデート
...または、XAMLで多数のレコードを表示する必要がある場合は、ポケットベルを使用する必要があります。