具体的に設計されたビューでレンダリングされるDXグリッドビューがあります。 Linq-2-Entitiesクエリからの値が埋め込まれた、あらかじめ定義されたViewModelオブジェクトを渡します。問題は、私たちのコールバック関数では、フィルタリング、ソート、およびページングがDevExpressグリッドによって実行される前に、L2Eクエリが実際にDB上で実行されるということです。 IE:データはビューに渡された前に、クエリが実際に実行される。このような状況でDevExpress MVC Gridview + LINQ
public ActionResult GridViewPartial(string myParameters)
{
var modelData = from s in db.myTable
select new { modelName = s.Name };
return PartialView("GridViewPartial", modelData);
}
(簡略化した例では、実際の状況では、我々はいくつかのテーブルから、まだ単一LINQクエリでデータを選択します)。したがって、実際にはDBからのデータの量が多すぎますが、グリッドビューでは選択したページのみが表示されます。
ユーザーが選択したページのデータのみを選択するように、クエリを変更する必要はありますか? IE。前述の状況のように、100000行(表にその数が多い場合)を選択するのではなく、その後にフィルタリング/並べ替え/ページングを適用するのではなく、ユーザーがページ2を選択したときに10行をスキップしてL2Eクエリを10回使用しますか?
投稿した最初のURL、http://www.devexpress.com/issue=Q333116には、ページング/並べ替え/フィルタリングパラメータを使用するLINQクエリを生成するために独自のロジックを実際に使用するように見えるサンプルプロジェクトが含まれています。 "ベース"のlinqクエリ(IQueryable myLinqObject = dbContext.myTableのsから)を作成し、データベース側でクエリを実行する前にgridviewにこれらのパラメータを自動的に追加することはできませんか?可能であれば、私は自分自身のロジックを実装することを避けたいと思います.BindToLINQ()関数はTake、Skipなどのアクションを単独で追加すると仮定しました。 – L2Eer
絶対に。 BindToLINQメソッドを使用している場合(どちらの方法でも)、GridViewは対応するLINQコマンド(Take、Skipなど)を実行します。 です。つまり、手動で実行する必要はありません。 あなたが提供したコードを使用して、SQL Server Profilerで必要なクエリを確認してください。 – Mikhail