Utilisation du modèle de persistance des objets - Kit SDK AWS Mobile

Le SDKAWS mobile pour Xamarin est désormais inclus dans leAWS SDK for .NET. Ce guide fait référence à la version archivée du SDK mobile pour Xamarin.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation du modèle de persistance des objets

Le SDK AWS Mobile pour .NET et Xamarin fournit un modèle de persistance des objets qui vous permet de mapper les classes côté client vers une table DynamoDB. Ensuite, chaque instance d'objet est mappée à un élément de la table correspondante. Pour enregistrer vos objets côté client dans une table, le modèle de persistance des objets fournit la classe DynamoDBContext, un point d'entrée dans DynamoDB. Cette classe permet une connexion à DynamoDB et vous donne la possibilité d'accéder aux tables, d'effectuer diverses opérations CRUD et d'exécuter des requêtes.

Le modèle de persistance des objets n'autorise pas une API à créer, mettre à jour ou supprimer des tables. Il fournit uniquement des opérations sur les données. Pour créer, mettre à jour et supprimer des tables, vous devez utiliser l'API de bas niveau. Pour accéder aux instructions sur l'utilisation de l'API de bas niveau, consultez Utilisation des API de niveau de service DynamoDB.

Présentation

Le modèle de persistance des objets fournit un ensemble d'attributs pour mapper les classes côté client aux tables, et les propriétés/champs aux attributs de table. Le modèle de persistance des objets prend en charge le mappage explicite par défaut entre les propriétés de classe et les attributs de table.

  • Mappage explicite : Pour mapper une propriété à une clé primaire, vous devez utiliser DynamoDBHashKeyet DynamoDBRangeKeyAttributs du modèle de persistance des objets. En outre, pour les attributs de clé non primaire, si un nom de propriété de votre classe et l'attribut de table correspondant auquel vous voulez le mapper ne sont pas identiques, vous devez définir le mappage en ajoutant explicitement l'attribut DynamoDBProperty.

  • Mappage par défaut :par défaut, le modèle de persistance des objets mappe les propriétés de la classe aux attributs avec le même nom dans la table.

Vous n'avez pas à mapper chaque propriété de classe individuelle. Vous identifiez ces propriétés en ajoutant l'attribut DynamoDBIgnore. La sauvegarde et la récupération d'une instance d'objet ignorent toutes les propriétés marquées avec cet attribut.

Types de données pris en charge

Le modèle de persistance des objets prend en charge un ensemble de types de données .NET primitifs, de collections et de types de données arbitraires. Le modèle prend en charge les types de données primitifs suivants.

  • bool

  •  octet

  • char

  • DateTime

  • decimal, double, float

  • Int16, Int32, Int64

  • SByte

  • chaîne

  • UInt16, UInt32, UInt64

Le modèle de persistance des objets prend également en charge les types de collection .NET avec les limitations suivantes :

  • Le type de collection doit implémenter l'interface ICollection.

  • Le type de collection doit être composé des types primitifs pris en charge. Par exemple, ICollection<string>, ICollection<bool>.

  • Le type de collection doit fournir un constructeur sans paramètre.

Pour plus d'informations sur le modèle de persistance des objets, consultez Modèle de persistance des objets .NET.

Créer un client DynamoDB

Pour créer un client DynamoDB :

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

Opérations CRUD

Enregistrer un objet

Créer un objet :

[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 };

Enregistrer un objet dans une table DynamoDB :

context.Save(myBook);

Récupérer un objet

Pour récupérer un objet :

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

Mettre à jour un objet

Pour mettre à jour un objet :

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

Supprimer un objet

Pour supprimer un objet:

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

Query and Scan

Pour interroger et récupérer tous les livres dont l'auteur est « 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()); }); }

L'exemple de code d'analyse ci-dessous retourne tous les livres de notre table :

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()); }); }