.NET : modèle de persistance des objets - Amazon DynamoDB

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.

.NET : modèle de persistance des objets

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

Le modèle de persistance des objets fournit un ensemble d'attributs pour mapper des classes côté client à des tables, et des propriétés/champs à des attributs de table.

Note

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. Vous ne pouvez utiliser que l'API de AWS SDK for .NET bas niveau pour créer, mettre à jour et supprimer des tables. Pour plus d’informations, consultez Utilisation des tables DynamoDB dans .NET.

L'exemple suivant montre le fonctionnement du modèle de persistance des objets. Il commence par la table ProductCatalog. Sa clé primaire est Id.

ProductCatalog(Id, ...)

Supposons que vous avec une classe Book avec les propriétés Title, ISBN et Authors. Vous pouvez mapper la classe Book à la table ProductCatalog en ajoutant les attributs définis par le modèle de persistance des objets, comme illustré dans l'exemple de code C# suivant.

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

Dans l'exemple précédent, l'attribut DynamoDBTable mappe la classe Book à la table ProductCatalog.

Le modèle de persistance des objets prend en charge les mappages explicite et 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 les attributs de modèle de persistance des objets DynamoDBHashKey et DynamoDBRangeKey. 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.

    Dans l'exemple précédent, la propriété Id mappe à la clé primaire du même nom, et la propriété BookAuthors mappe à l'attribut Authors dans la table ProductCatalog.

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

    Dans l'exemple précédent, les propriétés Title et ISBN mappent aux attributs du même nom dans la table ProductCatalog.

Vous n'avez pas à mapper chaque propriété de classe. Vous identifiez ces propriétés en ajoutant l'attribut DynamoDBIgnore. Lorsque vous enregistrez une instance Book dans la table, le DynamoDBContext n'inclut pas la propriété CoverPage. Il ne renvoie pas non plus cette propriété lorsque vous récupérez l'instance livre.

Vous pouvez mapper des propriétés de types primitifs .NET tels que int et string. Vous pouvez également mapper n'importe quels types de données arbitraires tant que vous fournissez un convertisseur approprié pour mapper les données arbitraires à l'un des types DynamoDB. Pour en savoir plus sur le mappage de types arbitraires, consultez Mappage de données arbitraires avec DynamoDB à l'aide AWS SDK for .NET du modèle de persistance des objets.

Le modèle de persistance des objets prend en charge le verrouillage optimiste. Au cours d'une opération de mise à jour, cela garantit que vous disposez de la dernière copie de l'élément que vous êtes sur le point de mettre à jour. Pour plus d’informations, consultez Verrouillage optimiste à l'aide d'un numéro de version avec DynamoDB utilisant AWS SDK for .NET le modèle de persistance des objets.

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

  • byte

  • char

  • DateTime

  • decimal

  • double

  • float

  • Int16

  • Int32

  • Int64

  • SByte

  • string

  • UInt16

  • UInt32

  • UInt64

Le modèle de persistance des objets prend également en charge les types de collections .NET. DynamoDBContext est capable de convertir des types de collections concrets et des POCOS (Plain Old CLR Objects) simples.

Le tableau suivant récapitule le mappage des types .NET précédents aux types DynamoDB.

Type primitif .NET Type DynamoDB

Tous les types de numéro

N (type Number)

Tous types de chaînes

S (type String)

MemoryStream, octet []

B (type Binary)

bool N (type de nombre). 0 représente false et 1 représente true.
Types de collections Type BS (ensemble de binaires), type SS (ensemble de chaînes) ou type NS (ensemble de nombres).
DateTime S (type String). Les valeurs DateTime sont stockées comme chaînes de format ISO-8601.

Le modèle de persistance des objets prend également en charge les types de données arbitraires. Toutefois, vous devez fournir un code de convertisseur pour mapper les types complexes aux types DynamoDB.

Note
  • Les valeurs binaires vides sont prises en charge.

  • La lecture des valeurs de chaîne vides est prise en charge. Les valeurs d'attribut de chaîne vides sont prises en charge dans les valeurs d'attribut de type de chaîne Set lors de l'écriture dans DynamoDB. Les valeurs d'attribut de chaîne vides de type String et les valeurs de chaîne vides contenues dans le type List ou Map sont supprimées des demandes d'écriture.