3

LINQを使用して、クエリIQueryableが処理される前のタイプであると誘惑するときに読んでいますが、クエリが処理されると、クエリはではなく、になりIQueryableますObjectQuery

その場合、IQueryableを返すために私のレイヤー(リポジトリレイヤー)からメソッドを書くのは正しいですか?

キャストする必要がありますか?

なぜ返品したいのObjectQueryですか?

私はLINQからSQLのバックグラウンドに来ていますIQueryableが、EFはこれを変えたようです。

どんな助けでも本当にありがたいです。

4

1 に答える 1

9

私のリポジトリは常にIQueryableを返します。これは、IQueryableがEFに依存していないのに対し、ObjectQueryは依存しているためです。したがって、他のレイヤーを永続性に依存させたくない場合は、ObjectQueryへの依存関係を導入したくありません。

ObjectQueryは、いくつかの追加機能を備えたIQueryableの実装です。すぐにわかる最初の機能は、ナビゲーションプロパティ(関連エンティティ)の積極的な読み込みに必要なインクルード関数です。2番目の機能はEQL-エンティティクエリ言語です。EQLは、概念モデルを照会する2番目の方法です。SQLと同様の構文を持っています。単純なクエリを文字列として記述し、それをObjectQueryコンストラクターに渡してクエリを実行するか、Linq-To-Entitiesで使用できます。

于 2010-09-04T21:06:34.717 に答える