Je ne sais pas exactement où, mais j'ai une mauvaise idée quelque part avec ça.Comment interroger une table de stockage Azure avec Linq?
J'essaie, dans un premier temps, interroger une table de stockage azur en utilisant linq. Mais je ne peux pas comprendre comment c'est fait. De regarder une variété de sources, j'ai ce qui suit:
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 { }
Je l'avais probablement plus proche avant que je me suis amusé avec elle. Soit ça, soit je ne comprends pas ce qu'est le service de table. Le code suivant a fonctionné pour moi, mais j'essaye de le changer en utilisant 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 { }
Je n'ai pas réussi à trouver un bon exemple solide de ce que je devrais faire. Mais d'après ce que j'ai lu, cela suggère que l'utilisation de Linq est possible. Toute aide ou pointeurs appréciés. Merci.
Légère mise à jour. Voici l'erreur de syntaxe que j'obtiens actuellement sur AsTableServiceQuery:
'System.Linq.IQueryable' ne contient pas de définition pour 'AsTableServiceQuery' et pas de méthode d'extension 'AsTableServiceQuery' acceptant un premier argument de type 'System.Linq. IQueryable 'pourrait être trouvé (vous manque une directive using ou une référence d'assembly?)
Cependant, je ne pense pas que ceci reflète le vrai problème, je pense que je l'ai juste mis ensemble mal, juste ne peux pas Trouver un exemple solide partout où cela fonctionne.
ce qui se passe exactement? obtenez-vous des messages d'erreur? pas de données? – Igorek
@Igorek Désolé, j'ai mis à jour avec l'erreur. Cependant, je ne pense pas que le code soit suffisamment proche de ce qu'il devrait être pour que l'erreur puisse vraiment signifier quoi que ce soit. – AndrewPolland