Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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.