0

私は Telerik オープン アクセスを使用しています。次のような 3 つの異なるデータ モデルがあります。

UserEntitiesModel->account_details
ProfileEntitiesModel->biographic_details
ContactsEntitiesModel->contact_groups

異なるデータ モデルに 3 つの異なるテーブルがあります。すべてのテーブルからデータをロードしたい。ジョインを使ってラムダ式を書いたのですが、例外がスローされています

ユーザー コードによって処理されない InvalidOperationException

異なるデータ モデルの異なるテーブルからデータを取得する方法を教えてください。

4

1 に答える 1

1

ご覧のとおり、異なるモデル (rlinq) ファイルは異なる Context オブジェクト (OpenAccessContext から派生したもの) を生成し、それらは異なる内部構造を使用し、完全に分離されています。つまり、LINQ クエリでそれらを結合することはできません。

LINQ クエリはコンテキストごとであり、(通常) SQL サーバー上で実行されます。OpenAccess は、2 つのモデルがどのように相関しているか、およびそれらが同じデータベース インスタンスからのものかどうかを認識できません。

そうは言っても、データ モデルが同じデータベースの異なる部分である (そして同じ (または類似の) 接続文字列を使用している) 場合、モデルを単一のコンテキスト オブジェクトに集約できるはずです。コンテキスト オブジェクトは MetadataSource で初期化され、 AggregateMetadataSourceを使用して、所有しているモデルを単一のモデルにマージできます。独自の Context オブジェクトを実装する必要があります。これは手間がかかりますが、機能するはずです。

このようなトラブルに巻き込まれたくない場合は、LINQ クエリで使用する前に、いつでも .ToList() を使用してテーブルから結果を列挙できます。ただし、これは、他の方法では必要のないより多くのデータをクライアントで取得することを意味します。

于 2012-07-16T07:59:14.800 に答える