2011-07-14 9 views
0

DBからデータを取得するためにストアドプロシージャを使用する必要がありますが、IQueryableを使用して結果にフィルタリングを追加することもできます。私は亜音速を使用していますが、今は亜音速spとIQueryableを使用する方法が見えません。私が持っている唯一のアイデアは、必要なすべての結合を実行するビューを作成することです。その後、亜音速でのテーブルに似表示するコールを実行します。サブソニックストアドプロシージャのIQueryable

MyView.All() 

サブソニックは全てのIQueryableを返し、代わりのSPで、私はコード内のフィルタ句を追加できる場所加えます。これが実行可能な解決策であるかどうかは分かりませんか?

答えて

0

私はSubfonicオブジェクトにビューを追加するためにthisソリューションを使用して終了し、フィルタリングを追加するにはIQueryableを使用しました。

1

IQueryableを使用すると、LINQクエリをSQL文に変換できます。 IQueryableをストアドプロシージャと組み合わせて使用​​することは、ストアドプロシージャとSQLステートメントを混合することと同じです(SELECT * FROM dbo.MyStoredProc WHERE x > 100など)。これは機能しないので、ストアドプロシージャとIQueryableを混在させることは無用です。なぜなら、SPが戻る前に結果をフィルタリングする方法がないからです。

あなたが探しているのは、クライアント側(.NET側)のフィルタリングです。このためには、単にIEnumerableを使用することができます。ストアドプロシージャがアイテムのコレクションを返すときは、そのコレクションに対してLINQクエリを引き続き使用できます。

+0

スティーブン、しかしあなたはそれらに対するビューとクエリについてどう思いますか?この場合、ストアドプロシージャを使用する必要はありません。結合はビューにあり、IQueryableを使用してフィルタリングが行われます。 –

+0

データベースビューでのLINQクエリは問題ありません。 – Steven