mvc contribケーションの拡大が問題-AsPagination
-
30-09-2019 - |
質問
ことがございました間違ったものAsPaginationない方法で非常に非効率で吸い込みのすべてのデータからリポジトリの初initialise TotalItemsているか。でページングを使用していないのデータにアクセスをより効率的です。
私が見つからなかった場合の例を使用するリポジトリと'true'ページング(利用トップなど。のatcual SQL).の使い方を教えてくださいページャーをしている場合は、リポジトリ方法この署名:
IList GetData(int?ページは、int TotalItems)
フィードバックが非常によろしくお願いいたします。感謝。
キリスト教
解決
ご利用可能に CustomPagination<T>
クラスの一部であるMVCContribようになります:
public ActionResult Index(int page)
{
int totalItems;
int pageSize = 10;
var data = Repository.GetData(page, out totalItems);
var paginatedData = new CustomPagination<Bla>(
data, page, pageSize, totalItems
);
return View(paginatedData);
}
内見:
<%= Html.Pager(Model) %>
他のヒント
と思いますが誤送付の前提は、ページングす。うに実行sqlのプロファイラで実行し二つのsqlステートメント-一を取得するカウントを選択し、トップ10に入るのです。以下の結果を実行したsqlからプロファイラ-
このsqlを取得しますが、カウント利用のポケットベル:
SELECT [GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[Customer] AS [Extent1]
)
AS [GroupBy1]
なので、sqlの取得に使用するデータ:
SELECT TOP (10)
[Extent1].[CustomerId] AS [CustomerId],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName],
...
FROM ( SELECT [Extent1].[CustomerId] AS [CustomerId], [Extent1].[FirstName] AS [FirstName], [Extent1].[LastName] AS [LastName], ..., row_number() OVER (ORDER BY [Extent1].[Company] ASC) AS [row_number]
FROM [dbo].[Customer] AS [Extent1]
) AS [Extent1]
WHERE [Extent1].[row_number] > 20
ORDER BY [Extent1].[Company] ASC
通知の上位(10),row_number()内には、...>20諸表のsqlスクリプト?なることを明確に?
所属していません StackOverflow