Comment interroger une table de stockage Azure avec Linq?
Je ne sais pas où exactement, mais j'ai eu la mauvaise idée quelque part avec cette.
J'essaie, en première instance, à la requête d'un stockage azure table à l'aide de linq. Mais je ne peux pas savoir comment c'est fait. En regardant une variété de sources, j'ai le texte suivant:
List<BlogViewModel> blogs = new List<BlogViewModel>();
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("BlogConnectionString"));
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable blogTable = tableClient.GetTableReference("BlogEntries");
try
{
TableServiceContext tableServiceContext = tableClient.GetTableServiceContext();
TableServiceQuery<BlogEntry> query = (from blog in blogTable.CreateQuery<BlogEntry>()
select blog).AsTableServiceQuery<BlogEntry>(tableServiceContext);
foreach (BlogEntry blog in query)
{
blogs.Add(new BlogViewModel { Body = blog.Body });
}
}
catch { }
J'ai probablement eu ça de plus près avant que j'ai foiré autour avec il. Soit ça, ou je suis l'incompréhension de ce que le TableService est. Le code suivant ne fonctionne pour moi, mais je suis en train de passer à l'utilisation de Linq à la place.
List<BlogViewModel> blogs = new List<BlogViewModel>();
var storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("BlogConnectionString"));
var tableClient = storageAccount.CreateCloudTableClient();
CloudTable blogTable = tableClient.GetTableReference("BlogEntries");
TableRequestOptions reqOptions = new TableRequestOptions()
{
MaximumExecutionTime = TimeSpan.FromSeconds(1.5),
RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3)
};
List<BlogEntry> lists;
try
{
var query = new TableQuery<BlogEntry>();
lists = blogTable.ExecuteQuery(query, reqOptions).ToList();
foreach (BlogEntry blog in lists)
{
blogs.Add(new BlogViewModel { Body = blog.Body });
}
}
catch { }
J'ai été incapable de trouver un solide bon exemple de ce que je devrais faire. Mais de ce que j'ai lu, il ne suggère l'utilisation de Linq est possible. De l'aide ou des pointeurs apprécié. Merci.
Légère mise à jour. La syntaxe est la suivante erreur que j'ai actuellement sur AsTableServiceQuery:
'Système.Linq.IQueryable' ne contient pas une définition pour 'AsTableServiceQuery' et aucune méthode d'extension 'AsTableServiceQuery' acceptant un premier argument de type 'System.Linq.IQueryable' a pu être trouvé (vous manque une directive using ou une référence d'assembly?)
Cependant, je ne pense pas que cela reflète la vraie question, je pense que je viens juste de me mettre ensemble de mal, juste ne pouvez pas trouver un exemple solide de n'importe où qui fonctionne.
source d'informationauteur AndrewPolland
Vous devez vous connecter pour publier un commentaire.
TableServiceContext n'est plus nécessaire à la nouvelle Table de la Couche de Service de Stockage Azure de la Bibliothèque du Client. Pour plus d'informations sur ce changement, veuillez consulter notre article de blog Annonce de Stockage de la Bibliothèque du Client 2.1 RTM & CTP pour Windows Phone.
Assurez-BlogEntry implémente ITableEntity et ensuite le code suivant devrait fonctionner parfaitement:
Mon tableau actuel référentiel de stockage fait ceci:
Mon _
cloudTable
correspond à votreblogTable
.Basée sur la réponse précédente, j'ai créé des extensions de méthodes pour soutenir les
First, FirstOrDefault, Single and SingleOrDefault
:De sorte que vous pouvez l'utiliser comme ça:
Voici quelques pratique de méthodes d'extension pour conclure..
(et un bonus de cas pour ServiceBus Propriétés Personnalisées keystore)