Travailler avec le. NETmodèle de persistance des objets et DynamoDB - 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.

Travailler avec le. NETmodèle de persistance des objets et DynamoDB

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 vous fournit une connexion à DynamoDB et vous permet d'accéder à des tables, d'effectuer CRUD diverses opérations et 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 ne permet pas de API créer, de mettre à jour ou de supprimer des tables. Il fournit uniquement des opérations sur les données. Vous ne pouvez utiliser que le AWS SDK for .NET niveau inférieur API pour créer, mettre à jour et supprimer des tables.

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 les propriétés de. NETtypes primitifs 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 de plus amples informations, veuillez consulter Verrouillage optimiste à l'aide de DynamoDB et du modèle de persistance des objets AWS SDK for .NET.

Pour plus d'informations, consultez les rubriques ci-dessous.

Types de données pris en charge

Le modèle de persistance des objets prend en charge un ensemble de primitives. NETtypes de données, collections et 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 le. NETtypes de collections. DynamoDBContextest capable de convertir des types de collections concrets et de simples CLR objets anciens (POCOs).

Le tableau suivant récapitule le mappage de ce qui précède. NETdes types aux types DynamoDB.

. NETtype primitif 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 DateTime valeurs sont stockées sous forme de chaînes formatées 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.