private static void InitializeTableSchemaFromEntity(CloudTableClient tableStorage, string entityName, TableServiceEntity entity) { TableServiceContext context = tableStorage.GetDataServiceContext(); DateTime now = DateTime.UtcNow; entity.PartitionKey = Guid.NewGuid().ToString(); entity.RowKey = Guid.NewGuid().ToString(); Array.ForEach(entity.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance), p => { if ((p.Name != "PartitionKey") && (p.Name != "RowKey") && (p.Name != "Timestamp")) { if (p.PropertyType == typeof(string)) { p.SetValue(entity, Guid.NewGuid().ToString(), null); } else if (p.PropertyType == typeof(DateTime)) { p.SetValue(entity, now, null); } } }); context.AddObject(entityName, entity); context.SaveChangesWithRetries(); context.DeleteObject(entity); context.SaveChangesWithRetries(); }
protected void DelAllBut_Click(object sender, EventArgs e) { #if AZURE var storageAccount = CloudStorageAccount.Parse(Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue("fiftyonedegrees")); var serviceContext = new TableServiceContext(storageAccount.TableEndpoint.ToString(), storageAccount.Credentials); storageAccount.CreateCloudTableClient().CreateTableIfNotExist("log"); foreach (var row in serviceContext.CreateQuery<LogMessageEntity>("log")) { serviceContext.DeleteObject(row); } serviceContext.SaveChanges(); Page.Response.Redirect(Page.Request.Url.ToString(), true); #endif }
public void Delete(InternalId internalId, TableServiceContext serviceContext) { var allKeysInIndex = (from ri in ReverseIndex(serviceContext) where ri.PartitionKey == internalId.ToString() select ri); //In the forward index, get the corresponding forward index for each reverse index value and delete them both Parallel.ForEach( allKeysInIndex, reverseEntity => { // var forwardEntity = new IndexEntity {PartitionKey = reverseEntity.RowKey, RowKey = reverseEntity.PartitionKey}; // serviceContext.AttachTo(ForwardIndexName, forwardEntity, "*"); var forwardEntity = Queryable.Single<IndexEntity>((from fi in ForwardIndex(serviceContext) where fi.PartitionKey == reverseEntity.RowKey where fi.RowKey == reverseEntity.PartitionKey select fi)); serviceContext.DeleteObject(forwardEntity); serviceContext.DeleteObject(reverseEntity); }); }
private void RemovePageWithChildPages(TableServiceContext serviceContext, PageEntity entity) { serviceContext.DeleteObject(entity); var children = serviceContext.CreateQuery<PageEntity>(PageTable) .Where(it => it.PartitionKey == entity.SiteName && it.ParentPage == entity.FullName) .ToArray(); foreach (var item in children) { RemovePageWithChildPages(serviceContext, item); } }
private void MovePageRecursively(Models.Site site, string pageFullName, string newParent, TableServiceContext serviceContext) { var oldPage = Get(new Page(site, pageFullName)); var entity = PageEntityHelper.ToPageEntity(oldPage); if (!string.IsNullOrEmpty(newParent)) { var newPage = new Page(new Page(site, newParent), oldPage.Name); entity.FullName = newPage.FullName; entity.ParentPage = newPage.Parent.FullName; } else { entity.FullName = oldPage.Name; entity.ParentPage = ""; } foreach (var item in ChildPages(oldPage)) { MovePageRecursively(site, item.FullName, entity.FullName, serviceContext); } serviceContext.AddObject(PageTable, entity); var oldEntity = PageEntityHelper.ToPageEntity(oldPage); serviceContext.AttachTo(PageTable, oldEntity, "*"); serviceContext.DeleteObject(oldEntity); }