private async Task UpdateEntity(CloudTable table, DynamicTableEntity entity) { try { await table.ExecuteAsync(TableOperation.Merge(entity)).ConfigureAwait(false); return; } catch(StorageException ex) { if(!Helper.IsError(ex, "EntityTooLarge")) throw; } var serialized = entity.Serialize(); Configuration .GetBlocksContainer() .GetBlockBlobReference(entity.GetFatBlobName()) .UploadFromByteArray(serialized, 0, serialized.Length); entity.MakeFat(serialized.Length); await table.ExecuteAsync(TableOperation.InsertOrReplace(entity)).ConfigureAwait(false); }
public void CanSerializeDeserializeTableEntity() { DynamicTableEntity entity = new DynamicTableEntity("partition", "row"); entity.Properties.Add("propertyname", new EntityProperty("propertyvalue")); var val = entity.Serialize(); DynamicTableEntity entity2 = new DynamicTableEntity(); entity2.Deserialize(val); Assert.Equal("partition", entity2.PartitionKey); Assert.Equal("row", entity2.RowKey); Assert.Equal("propertyvalue", entity2.Properties["propertyname"].StringValue); Assert.True(entity2.Serialize().SequenceEqual(entity.Serialize())); }