private static TableOperation BuildLinkChangeTableOperation( CategoryGroup categoryGroup, string categoryName, CategoryLinkChange change) { var link = new CategoryLink { CategoryGroup = categoryGroup, CategoryName = categoryName, ProfileId = change.ProfileId }; var adapter = new CategoryLinkAdapter(link); TableOperation operation; if (change.ChangeType == CategoryLinkChangeType.Add) { operation = TableOperation.InsertOrReplace(adapter); } else { // We don't care about concurrency here because we are removing the item adapter.ETag = "*"; operation = TableOperation.Delete(adapter); } return(operation); }
public async Task <IEnumerable <CategoryLink> > GetCategoryLinks( CategoryGroup categoryGroup, string categoryName, CancellationToken cancellationToken) { Ensure.String.IsNotNullOrWhiteSpace(categoryName, nameof(categoryName)); var partitionKey = CategoryLinkAdapter.BuildPartitionKey(categoryGroup, categoryName); var partitionKeyFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey); var query = new TableQuery <CategoryLinkAdapter>().Where(partitionKeyFilter); var table = GetTable(TableName); var entries = await table.ExecuteQueryAsync(query, cancellationToken).ConfigureAwait(false); return(from x in entries select x.Value); }