Utilizzo del modello di persistenza degli oggetti - AWS Mobile SDK

L'SDKAWS Mobile per Xamarin è ora incluso inAWS SDK for .NET. Questa guida fa riferimento alla versione archiviata di Mobile SDK per Xamarin.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo del modello di persistenza degli oggetti

L'SDK AWS Mobile per .NET e Xamarin offre un modello di persistenza degli oggetti che permette di mappare le classi lato client a una tabella DynamoDB. Ogni istanza dell'oggetto viene quindi mappata a un elemento nella tabella corrispondente. Per salvare gli oggetti lato client in una tabella, il modello di persistenza degli oggetti fornisce la classe DynamoDBContext, un punto di ingresso a DynamoDB. Questa classe fornisce una connessione a DynamoDB e permette di accedere alle tabelle, eseguire varie operazioni CRUD ed eseguire query.

Il modello di persistenza degli oggetti non fornisce un'API per creare, aggiornare o eliminare tabelle. Esso fornisce solo operazioni di dati. Per creare, aggiornare ed eliminare tabelle, è necessario utilizzare l'API di basso livello. Per istruzioni sull'utilizzo dell'API di basso livello, consultaUtilizzo delle API di livello di servizio DynamoDB.

Panoramica

Il modello di persistenza degli oggetti fornisce un insieme di attributi per mappare le classi lato client alle tabelle e le proprietà o i campi agli attributi di tabella. Il modello di persistenza degli oggetti supporta sia la mappatura esplicita che quella predefinita tra le proprietà della classe e gli attributi di tabella.

  • Mappatura esplicita: Per mappare una proprietà a una chiave primaria, è necessario utilizzare DynamoDBHashKeye DynamoDBRangeKeyAttributi del modello di persistenza oggetto. Inoltre, per gli attributi della chiave non primaria, se il nome di una proprietà nella classe e l'attributo tabella corrispondente a cui si desidera mappare non sono gli stessi, è necessario definire la mappatura aggiungendo esplicitamente l'attributo DynamoDBProperty.

  • Mappatura predefinita- Per impostazione predefinita, il modello di persistenza degli oggetti mappa le proprietà della classe agli attributi con lo stesso nome nella tabella.

Non è necessario mappare ogni singola proprietà della classe. Queste proprietà vengono identificate aggiungendo l'attributo DynamoDBIgnore. Il salvataggio e il recupero di un'istanza di un oggetto ometterebbe qualsiasi proprietà contrassegnata con questo attributo.

Tipi di dati supportati

Il modello di persistenza degli oggetti supporta un insieme di tipi di dati .NET primitivi e tipi di dati arbitrari. Il modello supporta i seguenti tipi di dati primitivi:

  • bool

  • byte

  • char

  • DateTime

  • decimale, doppio, float

  • Int 16, Int32, Int64

  • SByte

  • string

  • Uint16, Uint32, Uint64

Il modello Object Persistence supporta anche i tipi di insieme .NET con le seguenti limitazioni:

  • Il tipo di raccolta deve implementare l'interfaccia iCollection.

  • Il tipo di raccolta deve essere composto dai tipi primitivi supportati. Ad esempio, iCollection<string>, iCollection<bool>.

  • Il tipo di raccolta deve fornire un costruttore senza parametri.

Per ulteriori informazioni sul modello di persistenza degli oggetti, consultaModello di persistenza degli oggetti .NET.

Creazione di un client DynamoDB

Per creare un client DynamoDB

var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);

Operazioni CRUD

Salva un oggetto

Creazione di un oggetto:

[DynamoDBTable("Books")] public class Book { [DynamoDBHashKey] // Hash key. public string Id { get; set; } [DynamoDBGlobalSecondaryIndexHashKey] public string Author { get; set; } [DynamoDBGlobalSecondaryIndexRangeKey] public string Title { get; set; } public string ISBN { get; set; } public int Price { get; set; } public string PageCount { get; set; } } Book myBook = new Book { Id = id, Author = "Charles Dickens", Title = "Oliver Twist", ISBN = "111-1111111001", Price = 10, PageCount = 300 };

Salva un oggetto in una tabella DynamoDB:

context.Save(myBook);

Recupero di un oggetto

Per recuperare un oggetto:

Book retrievedBook = context.Load<Book>(1);

Aggiornamento di un oggetto

Per aggiornare un oggetto:

Book retrievedBook = context.Load<Book>(1); retrievedBook.ISBN = "111-1111111001"; context.Save(retrievedBook);

Eliminazione di un oggetto

Per eliminare un oggetto:

Book retrievedBook = context.Load<Book>(1); context.Delete(retrievedBook);

Eseguire query e scansioni

Per interrogare e recuperare tutti i libri il cui autore è «Charles Dickens»:

public async Task QueryAsync(AWSCredentials credentials, RegionEndpoint region) { var client = new AmazonDynamoDBClient(credentials, region); DynamoDBContext context = new DynamoDBContext(client); var search = context.FromQueryAsync < Book > (new Amazon.DynamoDBv2.DocumentModel.QueryOperationConfig() { IndexName = "Author-Title-index", Filter = new Amazon.DynamoDBv2.DocumentModel.QueryFilter("Author", Amazon.DynamoDBv2.DocumentModel.QueryOperator.Equal, "Charles Dickens") }); Console.WriteLine("items retrieved"); var searchResponse = await search.GetRemainingAsync(); searchResponse.ForEach((s) = > { Console.WriteLine(s.ToString()); }); }

Il codice di esempio di scansione riportato di seguito restituisce tutti i libri nella nostra tabella:

public async Task ScanAsync(AWSCredentials credentials, RegionEndpoint region) { var client = new AmazonDynamoDBClient(credentials, region); DynamoDBContext context = new DynamoDBContext(client); var search = context.FromScanAsync < Book > (new Amazon.DynamoDBv2.DocumentModel.ScanOperationConfig() { ConsistentRead = true }); Console.WriteLine("items retrieved"); var searchResponse = await search.GetRemainingAsync(); searchResponse.ForEach((s) = > { Console.WriteLine(s.ToString()); }); }