Utilizando Entity Group Transactions com Tables do Windows Azure – Versão 2.0
Olá pessoal,
Tempos atrás fiz um post sobre como utilizar entity group transactions com tables do Windows Azure, hoje vou comentar o assunto utilizando o novo modelo de programação para tables, um post introdutório sobre o assunto pode ser encontrado aqui.
Em linhas gerais, as principais regras para que seja possível utilizar transações são:
- Transações de update, delete, insert, merge e replace podem ser executadas
- É possível fazer uma operação de retrieve, mas ela precisa ser a única operação executada
- Podem ser feitas até 100 transações em lote
- Todas as entidades em um único lote de processamento devem estar na mesma partition key
- Os dados não podem ultrapassar 4 MB de tamanho
Para realizar transações é necessário criar um objeto da classe TableBatchOperation e depois utilizar o método correspondente à operação sendo executada (Insert, Delete, etc), conforme exemplo abaixo:
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
…
CloudStorageAccount account = CloudStorageAccount.DevelopmentStorageAccount;
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable usuarios = tableClient.GetTableReference("Usuarios");
usuarios.CreateIfNotExists();
TableBatchOperation batch = new TableBatchOperation();
for (int i = 0; i < 50; i++)
{
Usuario novoUsuario = new Usuario()
{
PartitionKey = DateTime.UtcNow.ToString("yyyyMMdd"),
RowKey = Guid.NewGuid().ToString(),
Nome = string.Format("Usuario {0}", i),
EMail = string.Format("usuario{0}@contoso.com", i),
Idade = i,
AceitaReceberEMails = true
};
batch.Insert(novoUsuario);
}
usuarios.ExecuteBatch(batch);
Neste post adaptei os códigos utilizados nos meus dois posts anteriores sobre table e o código atualizado pode ser encontrado aqui.