private async Task<DynamicTableEntity> FetchFatEntity(DynamicTableEntity e)
 {
     var size = e.Properties["fat"].Int32Value.Value;
     byte[] bytes = new byte[size];
     await Configuration
         .GetBlocksContainer()
         .GetBlockBlobReference(e.GetFatBlobName())
         .DownloadRangeToByteArrayAsync(bytes, 0, 0, bytes.Length).ConfigureAwait(false);
     e = new DynamicTableEntity();
     e.Deserialize(bytes);
     return e;
 }
 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);
 }