Trabalhar com o modelo de persistência de objetos do .NET e o DynamoDB - Amazon DynamoDB

Trabalhar com o modelo de persistência de objetos do .NET e o DynamoDB

O AWS SDK for .NET fornece um modelo de persistência de objetos que permite mapear classes do cliente em tabelas do Amazon DynamoDB. Em seguida, cada instância de objeto é mapeada para um item nas tabelas correspondentes. Para salvar objetos no lado do cliente nas tabelas, o modelo de persistência de objetos fornece a classe DynamoDBContext, um ponto de entrada para o DynamoDB. Esta classe fornece uma conexão ao DynamoDB e permite que você acesse tabelas, execute várias operações CRUD e realize consultas.

O modelo de persistência de objetos fornece um conjunto de atributos para mapear classes no lado do cliente para tabelas e propriedades/campos para atributos de tabela.

nota

O modelo de persistência de objetos não fornece uma API para criar, atualizar ou excluir tabelas. Ele fornece apenas operações de dados. É possível usar somente a API de baixo nível do AWS SDK for .NET para criar, atualizar e excluir tabelas.

O exemplo a seguir mostra como o modelo de persistência de objetos funciona. Ele começa com a tabela ProductCatalog. Id é a chave primária.

ProductCatalog(Id, ...)

Suponha que você tenha uma classe Book com propriedades Title, ISBN e Authors. É possível mapear a classe Book na tabela ProductCatalog adicionando os atributos definidos pelo modelo de persistência de objetos, conforme mostrado no trecho de código C# a seguir.

exemplo
[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } public string Title { get; set; } public int ISBN { get; set; } [DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; } [DynamoDBIgnore] public string CoverPage { get; set; } }

No exemplo anterior, o atributo DynamoDBTable mapeia a classe Book na tabela ProductCatalog.

O modelo de persistência objeto oferece suporte a tipos de mapeamento explícito e padrão entre propriedades de classe e atributos de tabela.

  • Mapeamento explícito: para mapear uma propriedade em uma chave primária, você deve usar os atributos DynamoDBHashKey e DynamoDBRangeKey do modelo de persistência de objetos. Além disso, para os atributos de chave não primárias, se um nome de propriedade na sua classe e o atributo de tabela correspondente ao qual você deseja mapear não forem os mesmos, será necessário definir o mapeamento adicionando explicitamente o atributo DynamoDBProperty.

    No exemplo anterior, a propriedade Id é mapeada na chave primária com o mesmo nome, e a propriedade BookAuthors é mapeada no atributo Authors na tabela ProductCatalog.

  • Mapeamento padrão — por padrão, o modelo de persistência objeto mapeia as propriedades da classe para os atributos com o mesmo nome na tabela.

    No exemplo anterior, as propriedades Title e ISBN são mapeadas nos atributos com o mesmo nome na tabela ProductCatalog.

Não é necessário mapear cada propriedade de classe. Identifique essas propriedades adicionando o atributo DynamoDBIgnore. Quando você salva uma instância de Book na tabela, DynamoDBContext não inclui a propriedade CoverPage. Ele também não retorna essa propriedade quando você recupera a instância de livro.

É possível mapear propriedades de tipos primitivos do .NET, como int e string. Também é possível mapear qualquer tipo de dados arbitrário, desde que você forneça um conversor apropriado para mapear os dados arbitrários em um do tipos do DynamoDB. Para saber mais sobre o mapeamento de tipos arbitrários, consulte Mapear dados arbitrários com o DynamoDB usando o modelo de persistência de objetos do AWS SDK for .NET.

O modelo de persistência objetos oferece suporte a bloqueio otimista. Durante uma operação de atualização, isso garante que você tenha a cópia mais recente do item que está prestes a atualizar. Para ter mais informações, consulte Bloqueio positivo usando o DynamoDB e o modelo de persistência de objetos do AWS SDK for .NET.

Para obter mais informações, consulte os tópicos abaixo:

Tipos de dados compatíveis

O modelo de persistência de objetos oferece suporte a um conjunto de tipos de dados primitivos do .NET, coleções e tipos de dados arbitrários. O modelo é compatível com os seguintes tipos de dados primitivos.

  • bool

  • byte

  • char

  • DateTime

  • decimal

  • double

  • float

  • Int16

  • Int32

  • Int64

  • SByte

  • string

  • UInt16

  • UInt32

  • UInt64

O modelo de persistência de objetos também oferece suporte aos tipos de coleção .NET. DynamoDBContext é capaz de converter tipos de coleção concretos e objetos CLR básicos (POCOs).

A tabela a seguir resume o mapeamento dos tipos .NET anteriores nos tipos do DynamoDB.

Tipo primitivo .NET Tipo do DynamoDB

Todos os tipos de número

N (tipo Número)

Todos os tipos de string

S (tipo String)

MemoryStream, byte[]

B (tipo Binário)

bool N (tipo numérico), 0 representa false 1 representa true.
Tipos de coleção Tipo BS (conjunto binário), tipo SS (conjunto de strings) e tipo NS (conjunto de números)
DateTime S (tipo String). Os valores de DateTime são armazenados como strings formatadas em ISO-8601.

O modelo de persistência de objetos também oferece suporte a tipos de dados arbitrários. No entanto, você deve fornecer o código de conversor para mapear os tipos complexos em tipos do DynamoDB.

nota
  • Valores binários vazios são compatíveis.

  • A leitura de valores string vazios é compatível. Os valores de atributos string vazios são compatíveis nos valores de atributos do tipo de conjunto string durante a gravação no DynamoDB. Os valores de atributos string vazios do tipo string e os valores string vazios contidos no tipo Lista ou Mapa são descartados das solicitações de gravação