2010-09-29 12 views
2

J'utilise RiaServices pour remplir une grille à l'aide d'une EntityQuery.Problème de pagination intelligente avec RiaServices et entityQuery.IncludeTotalCount lors du filtrage

Étant donné que ma base de données contient des millions de lignes, je souhaite interroger uniquement la page en cours, mais également apporter le nombre total de lignes à des fins de pagination.

Ex: 100 lignes au total

entityQuery.Skip(0).Take(10); //for the first page 
entityQuery.IncludeTotalCount = true; 

Cela me fait 10 lignes, et loadOperation.TotalEntityCount = 100. Parfait.

Mais imaginez ceci:

Ex: 100 lignes au total

entityQuery.Where(p => Id >= 1 && p.Id <= 50).Skip(0).Take(10); //with filter now 
entityQuery.IncludeTotalCount = true; 

Cela me fait 10 lignes, et loadOperation.TotalEntityCount = 100

Voici le (50 j'ai besoin!) problème: à des fins de pagination, j'ai besoin du nombre total d'entités satisfaisant mon filtre, pas toutes.

Est-il possible de modifier la requête pour "IncludeTotalCount" ou dois-je oublier TotalEntityCount et interroger le serveur deux fois?

Cheers,

André Carlucci

Répondre

1

Services RIA traite les demandes de comptage au total par élimination du saut/prendre des directives d'appel (comme on pouvait s'y attendre) et passer la requête unpaged à l'DomainService.Count virtuel protégé méthode. Je recommande de remplacer cette méthode, en définissant un point d'arrêt afin que vous puissiez vérifier que la requête de nombre correcte est transmise à votre service. Si vous utilisez EF DomainService, l'implémentation de base de Count fera simplement un query.Count(). Donc, les choses devraient se comporter comme vous vous attendez - je ne suis pas encore sûr pourquoi elles ne le sont pas. Quel type de DomainService utilisez-vous?

+0

Oh bon sang, j'ai passé outre cette méthode il y a longtemps et j'ai complètement oublié son existence ... J'ai mis un point d'arrêt là et j'ai attrapé l'erreur. Tks. – andrecarlucci

+0

Pour une raison quelconque, je continue à obtenir -1. Comment est-ce que je fais ce travail sur le serveur? – Jordan