1

ADO.NET Data Services を介して 3 つのデータ ソースを公開する Windows サービスがあります。これらのデータ ソースは、XDocument に読み込まれた読み取り専用の XML ファイルであり、.AsQueryable(); を介して公開されます。ソースには、データ ソース間の「外部キー」と見なすことができる整数 ID を持つフィールドが含まれています。

クライアントはこのデータ サービスを使用し、LINQ を使用して 3 つのデータ ソースを個別にクエリできます。データを使用するデータバインドされたコントロールがあります。

クライアントでは、これら 3 つのデータ ソース間を SQL スタイルで結合したいと考えています。最初は LINQ 結合でこれを行いましたが、ADO.NET Data Services がこれをサポートしていないことがわかりました。

私の 2 番目のアプローチは、データを個別のテーブルとしてフェッチしてから、クライアント側で結合を実行することでした。これは最適とは言えませんが。ただし、LINQ はデータを遅延してフェッチし、データが列挙されるときにクエリを作成するため、最終的には最初のアプローチと同じ問題が発生します。

したがって、これを行う最善の方法は、サーバー側ですべてのデータを結合し、IQueryable インターフェイスを提供する新しいオブジェクトを使用してこれを公開することだと考えています。

これは本当に最善のアプローチですか?それは....だらしないようです。

4

1 に答える 1

2

2 番目のアプローチを使用して、ToList() で早期ロードを強制し、LINQ to Objects を使用して 2 つのリストで結合を行うことができます。

ほとんど最適ではなく、構成可能性が失われますが、遅延読み込みの問題を回避できるはずです。

于 2009-02-14T19:12:54.307 に答える