2012-07-24 3 views
1

J'ai un problème de .count() tout en utilisant la méthode .count() sur CloudTableQueryProblème avec la méthode C#

public void AccessEntites() 
    { 
     CloudTableQuery entries = 
      (from e in ServiceContext.CreateQuery<T>(TableName) 
      select e).AsTableServiceQuery(); 

     int count = entries.Count(); //An error occurred while processing this request. 
    } 

Je veux juste compter le nombre total d'éléments que nous avons dans les entrées. Qu'est ce que je fais mal?

+4

Donnez les détails complets de l'exception. Le nombre n'est pas le problème, la requête est. Il ne s'exécute que lorsque vous essayez d'accéder aux résultats (avec .count()) –

+0

Quels sont les détails de l'exception/erreur, que fait AsTableServiceQuery? Est-ce que TableServiceExtensionMethods.AsTableServiceQuery? ... –

+0

Existe-t-il une raison pour que l'expression de votre requête ne soit pas CloudTableQuery entries = ServiceContext.CreateQuery (TableName) .AsTableServiceQuery(); '? – phoog

Répondre

2

Assurez-vous que vos entrées ne sont pas nulles.

int count; 
if (entries != null) 
    count = entries.Count(); 
+1

Je suis surpris que cette réponse soit acceptée, car elle n'est clairement pas la bonne. Lorsque 'entries' serait nul, le résultat serait une exception NullReferenceException, et non "Une erreur est survenue lors du traitement de cette requête". – user1527329

+0

@ user1527329 Je n'ai pas beaucoup fait avec Azure, donc vous avez peut-être raison, mais l'OP ne nous a jamais donné le vrai message d'erreur. Je peux me tromper, mais il semble que [CloudTableQuery] (http://msdn.microsoft.com/fr-fr/library/windowsazure/ee758648) implémente IEnumerable, donc Count devrait être disponible. – LarsTech

+0

Désolé, mais je pense que c'est très naïf. "Une erreur s'est produite lors du traitement de cette requête." est un message d'erreur très courant dans .NET, donc il est prudent de supposer que c'est le message d'erreur (le plus haut) qu'il a reçu, et non l'exception NullReferenceException que vous obtiendriez avec une référence nulle. – user1527329

1

Ce code ne fonctionne pas, car le Azure Table Storage (Nuage de table) ne prend pas en charge une opération Count() pour obtenir la quantité d'entités. La seule façon d'obtenir cette valeur est de récupérer toutes les entités (mieux une petite projection) et de compter les entités récupérées.

edit: Voici un lien vers le forum Microsoft social où cela a été dit aussi en avril 2012 (encore valide).

http://social.msdn.microsoft.com/Forums/nl-BE/windowsazuredata/thread/440e19fe-f3e0-4c98-a28f-85c535f3d735

+0

Le type de résultat est IEnumerable ou non? –

+0

C'est IQueryable. Mais jamais Azure Table Storage ne fournit vraiment beaucoup de fonctionnalités que vous attendez, ayant un IQueryable. – user1527329

+0

Ayant lu l'aide (bêta regardant), je crois que c'est juste. +1 –