Nie jestem pewien, gdzie dokładnie, ale mam gdzieś ten pomysł.Jak przesłać zapytanie do tabeli pamięci masowej Azure za pomocą Linq?
Próbuję, w pierwszej kolejności, kwerendy tabeli przechowywania lazuru za pomocą linq. Ale nie mogę zrozumieć, jak to się robi. Spoglądając na różne źródła, mam następujące:
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 { }
Prawdopodobnie miałem go bliżej, zanim się z nim pobrałem. Albo to, albo nie rozumiem, czym jest TableService. Poniższy kod pracował dla mnie, ale staram się go zmienić na Linq.
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 { }
Nie udało mi się znaleźć dobrego przykładu z tego, co powinienem robić. Ale z tego, co czytałem, wynika, że użycie Linq jest możliwe. Każda pomoc lub wskazówki zostały docenione. Dzięki.
Nieznaczna aktualizacja. Poniżej znajduje się błąd składniowy, który aktualnie dostaję w AsTableServiceQuery:
"System.Linq.IQueryable" nie zawiera definicji "AsTableServiceQuery" i nie ma metody rozszerzenia "AsTableServiceQuery" akceptującej pierwszy argument typu "System.Linq. IQueryable "można znaleźć (czy brakuje Ci dyrektywy dotyczącej użycia lub odniesienia do zespołu?)
Jednak nie sądzę, aby odzwierciedlało to prawdziwy problem, myślę, że właśnie to zrobiłem źle, po prostu nie mogę znajdź solidny przykład w dowolnym miejscu, który działa.
co dokładnie się dzieje? otrzymujesz komunikaty o błędach? brak danych? – Igorek
@Igorek Przepraszam, zaktualizowałem z błędem. Jednak nie sądzę, aby kod był wystarczająco zbliżony do tego, jak powinien wyglądać błąd, aby naprawdę cokolwiek znaczyć. – AndrewPolland