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
eDynamoDBRangeKey
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 atributoDynamoDBProperty
.No exemplo anterior, a propriedade
Id
é mapeada na chave primária com o mesmo nome, e a propriedadeBookAuthors
é mapeada no atributoAuthors
na tabelaProductCatalog
. -
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
eISBN
são mapeadas nos atributos com o mesmo nome na tabelaProductCatalog
.
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:
Tópicos
- Tipos de dados compatíveis
- Atributos do DynamoDB do modelo de persistência de objetos do .NET
- Classe DynamoDBContext do modelo de persistência de objetos do .NET
- Bloqueio positivo usando o DynamoDB e o modelo de persistência de objetos do AWS SDK for .NET
- Mapear dados arbitrários com o DynamoDB usando o modelo de persistência de objetos do AWS SDK for .NET
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 |
|
Todos os tipos de string |
|
MemoryStream, byte[] |
|
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