IQueryable.Skip et IQueryable.Take Upper Bound

J'utilise Entity Framework pour interroger une database et j'utilise ce qui suit:

context .MyTable .Where(...) .Where(...) .OrderBy(...) .Skip((int)numberOfItemsToSkip) .Take((int)numberOfItemsToTake) .ToArray(); 

Ma question concerne la partie Skip((int)numberOfItemsToSkip) . Il accepte uniquement un argument Int32 qui a une limite supérieure de Int32.MaxValue . Maintenant, que se passe-t-il si le MyTable contient plus d'loggings Int32.MaxValue . La raison pour laquelle je dis cela est parce que la database que j'ai est énorme et se développe considérablement et c'est pourquoi je suis tombé sur le cas que Int32.MaxValue pourrait ne pas être suffisant. Ma database est hébergée sur SQL Server.

Donc, y a-t-il un moyen embedded de passer un argument Int64 place? Je peux aller de l'avant et faire quelque chose de manuel, mais ma question concerne quelque chose de Entity Framework.

Vous pouvez essayer de répéter plusieurs fois:

 context .MyTable .Where(...) .Where(...) .OrderBy(...)//you forgot it .Skip(numberOfItemsToSkip1) .Skip(numberOfItemsToSkip2) .Take(numberOfItemsToTake) .ToArray(); 

Résultat SQL (EF 6.1.3, SQL Server 2012):

 SELECT * FROM [dbo].[Table] WHERE .... ORDER BY ... OFFSET numberOfItemsToSkip1 + numberOfItemsToSkip2 ROWS FETCH NEXT numberOfItemsToTake ROWS ONLY