Пример #1
0
        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);
        }
Пример #2
0
        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())
            .UploadFromByteArrayAsync(serialized, 0, serialized.Length).GetAwaiter().GetResult();
            entity.MakeFat(serialized.Length);
            await table.ExecuteAsync(TableOperation.InsertOrReplace(entity)).ConfigureAwait(false);
        }