ynamoDBContext Classe D - 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.

ynamoDBContext Classe D

La classe DynamoDBContext est le point d'entrée de la base de données Amazon DynamoDB. Il fournit une connexion à DynamoDB et vous permet d'accéder à vos données dans différentes tables, d'effectuer CRUD diverses opérations et d'exécuter des requêtes. La classe DynamoDBContext fournit les méthodes suivantes.

Créez MultiTable BatchGet

Crée un objet MultiTableBatchGet composé de plusieurs objets BatchGet. Chacun de ces objets BatchGet peut être utilisé pour récupérer des éléments d'une table DynamoDB.

Pour récupérer les éléments des tables, utilisez la méthode ExecuteBatchGet en passant l'objet MultiTableBatchGet en tant que paramètre.

Créez MultiTable BatchWrite

Crée un objet MultiTableBatchWrite composé de plusieurs objets BatchWrite. Chacun de ces objets BatchWrite peut être utilisé pour écrire ou supprimer des éléments dans une table DynamoDB.

Pour écrire dans des tables, utilisez la méthode ExecuteBatchWrite en passant l'objet MultiTableBatchWrite en tant que paramètre.

CreateBatchGet

Crée un objet BatchGet que vous pouvez utiliser pour extraire plusieurs éléments d'une table. Pour de plus amples informations, veuillez consulter Obtention par lots : obtention de plusieurs éléments .

createBatchWrite

Crée un objet BatchWrite que vous pouvez utiliser pour insérer plusieurs éléments dans une table ou supprimer plusieurs éléments d'une table. Pour de plus amples informations, veuillez consulter Écriture par lots : insertion et suppression de plusieurs éléments .

Suppression

Supprime un élément de la table. La méthode requiert la clé primaire de l'élément que vous souhaitez supprimer. Vous pouvez fournir en tant que paramètre à cette méthode la valeur de clé primaire ou un objet côté client contenant une valeur de clé primaire.

  • Si vous spécifiez un objet côté client en tant que paramètre et avez activé le verrouillage optimiste, la suppression ne réussit que si les versions côté client et côté serveur de l'objet correspondent.

  • Si vous spécifiez uniquement la valeur de clé primaire en tant que paramètre, la suppression réussit, que vous ayez activé ou non le verrouillage optimiste.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode DeleteAsync à la place.

Dispose

Élimine toutes les ressources gérées et non gérées.

ExecuteBatchGet

Lit les données d'une ou plusieurs tables, en traitant tous les objets BatchGet en un objet MultiTableBatchGet.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode ExecuteBatchGetAsync à la place.

ExecuteBatchWrite

Ecrit ou supprime des données dans une ou plusieurs tables, en traitant tous les objets BatchWrite en un objet MultiTableBatchWrite.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode ExecuteBatchWriteAsync à la place.

FromDocument

Pour une instance de Document, la méthode FromDocument renvoie une instance d'une classe côté client.

Ceci est utile si vous souhaitez utiliser les classes de modèle de document avec le modèle de persistance des objets pour effectuer des opérations de données. Pour plus d'informations sur les classes de modèles de documents fournies par le AWS SDK for .NET, consultez.NET : modèle de document.

Supposons que vous ayez un objet Document nommé doc qui contient une représentation d'un l'élément Forum. (Pour voir comment construire cet objet, consultez la description de la méthode ToDocument, plus loin dans cette rubrique. Vous pouvez utiliser le paramètre FromDocument pour récupérer l'élément Forum à partir de Document, comme illustré dans l'exemple de code C# suivant.

Exemple
forum101 = context.FromDocument<Forum>(101);
Note

Si votre objet Document implémente l'interface IEnumerable, vous pouvez utiliser la méthode FromDocuments à la place. Cela vous permet d'itérer sur toutes les instances de classe dans le Document.

FromQuery

Exécute une opération Query avec les paramètres de requête définis dans un objet QueryOperationConfig.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode FromQueryAsync à la place.

FromScan

Exécute une opération Scan avec les paramètres d'analyse définis dans un objet ScanOperationConfig.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode FromScanAsync à la place.

GetTargetTable

Récupère la table cible pour le type spécifié. Ceci est utile si vous écrivez un convertisseur personnalisé pour mapper des données arbitraires à une table DynamoDB, et devez déterminer la table associée à un type de données personnalisé.

Equilibreur de

Récupère un élément dans une table. La méthode requiert uniquement la clé primaire de l'élément que vous souhaitez extraire.

Par défaut, DynamoDB renvoie l'élément ayant des valeurs éventuellement cohérentes. Pour plus d'informations sur le modèle de cohérence éventuelle, consultez Cohérence en lecture.

Loadou la LoadAsync méthode appelle l'GetItemopération, qui vous oblige à spécifier la clé primaire de la table. Comme le IndexName paramètre est GetItem ignoré, vous ne pouvez pas charger un élément à l'aide de la partition ou de la clé de tri d'un index. Par conséquent, vous devez utiliser la clé primaire de la table pour charger un élément.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode LoadAsync à la place. Pour voir un exemple d'utilisation de LoadAsync cette méthode pour effectuer des CRUD opérations de haut niveau sur une table DynamoDB, consultez l'exemple suivant.

/// <summary> /// Shows how to perform high-level CRUD operations on an Amazon DynamoDB /// table. /// </summary> public class HighLevelItemCrud { public static async Task Main() { var client = new AmazonDynamoDBClient(); DynamoDBContext context = new DynamoDBContext(client); await PerformCRUDOperations(context); } public static async Task PerformCRUDOperations(IDynamoDBContext context) { int bookId = 1001; // Some unique value. Book myBook = new Book { Id = bookId, Title = "object persistence-AWS SDK for.NET SDK-Book 1001", Isbn = "111-1111111001", BookAuthors = new List<string> { "Author 1", "Author 2" }, }; // Save the book to the ProductCatalog table. await context.SaveAsync(myBook); // Retrieve the book from the ProductCatalog table. Book bookRetrieved = await context.LoadAsync<Book>(bookId); // Update some properties. bookRetrieved.Isbn = "222-2222221001"; // Update existing authors list with the following values. bookRetrieved.BookAuthors = new List<string> { " Author 1", "Author x" }; await context.SaveAsync(bookRetrieved); // Retrieve the updated book. This time, add the optional // ConsistentRead parameter using DynamoDBContextConfig object. await context.LoadAsync<Book>(bookId, new DynamoDBContextConfig { ConsistentRead = true, }); // Delete the book. await context.DeleteAsync<Book>(bookId); // Try to retrieve deleted book. It should return null. Book deletedBook = await context.LoadAsync<Book>(bookId, new DynamoDBContextConfig { ConsistentRead = true, }); if (deletedBook == null) { Console.WriteLine("Book is deleted"); } } }

Requête

Interroge une table sur la base des paramètres de requête que vous fournissez.

Vous pouvez interroger une table uniquement si elle comporte une clé primaire composite (clé de partition et clé de tri). Lors de l'interrogation, vous devez spécifier une clé de partition et une condition qui s'applique à la clé de tri.

Supposons que vous disposez d'une classe Reply côté client mappée à la table Reply dans DynamoDB. L'exemple de code C# suivant interroge la table Reply pour trouver les réponses des unités d’exécution de forum publiées au cours des 15 derniers jours. La table Reply possède une clé primaire qui a la clé de partition Id et la clé de tri ReplyDateTime. Pour plus d'informations sur la table Reply, consultez Création de tables et chargement de données pour des exemples de code dans DynamoDB.

Exemple
DynamoDBContext context = new DynamoDBContext(client); string replyId = "DynamoDB#DynamoDB Thread 1"; //Partition key DateTime twoWeeksAgoDate = DateTime.UtcNow.Subtract(new TimeSpan(14, 0, 0, 0)); // Date to compare. IEnumerable<Reply> latestReplies = context.Query<Reply>(replyId, QueryOperator.GreaterThan, twoWeeksAgoDate);

Ceci renvoie une collection d'objets Reply.

La méthode Query renvoie une collection IEnumerable « avec chargement différé ». Elle ne renvoie initialement qu'une seule page de résultats puis effectue un appel de service pour la page suivante si nécessaire. Pour obtenir tous les éléments correspondants, vous devez itérer uniquement sur la collection IEnumerable.

Si votre table possède une clé primaire simple (clé de partition), vous ne pouvez pas utiliser la méthode Query. Au lieu de cela, vous pouvez utiliser la méthode Load et fournir la clé de partition pour récupérer l'élément.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode QueryAsync à la place.

Enregistrer

Enregistre l'objet spécifié dans la table. Si la clé primaire spécifiée dans l'objet d'entrée n'existe pas dans la table, la méthode ajoute un nouvel élément à celle-ci. Si la clé primaire existe, la méthode met à jour l'élément existant.

Si le verrouillage optimiste est configuré, la mise à jour ne réussit que si les versions client et serveur de l'élément correspondent. Pour de plus amples informations, veuillez consulter Verrouillage optimiste à l'aide d'un numéro de version avec DynamoDB utilisant AWS SDK for .NET le modèle de persistance des objets.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode SaveAsync à la place.

Analyser

Effectue une analyse de la table toute entière.

Vous pouvez filtrer les résultats d'analyse en spécifiant une condition d'analyse. La condition peut être évaluée sur n'importe quel attribut dans la table. Supposons que vous disposez d'une classe Book côté client mappée à la table ProductCatalog dans DynamoDB. L'exemple C # suivant analyse la table et renvoie uniquement les éléments livre dont le prix est inférieur à 0.

Exemple
IEnumerable<Book> itemsWithWrongPrice = context.Scan<Book>( new ScanCondition("Price", ScanOperator.LessThan, price), new ScanCondition("ProductCategory", ScanOperator.Equal, "Book") );

La méthode Scan renvoie une collection IEnumerable « avec chargement différé ». Elle ne renvoie initialement qu'une seule page de résultats puis effectue un appel de service pour la page suivante si nécessaire. Pour obtenir tous les éléments correspondants, vous devez seulement itérer sur la collection IEnumerable.

Pour des raisons de performance, vous devez interroger vos tables et éviter une analyse de table.

Note

Pour effectuer cette opération en arrière-plan, utilisez la méthode ScanAsync à la place.

ToDocument

Renvoie une instance de la classe de modèle de document Document de votre instance de classe.

Ceci est utile si vous souhaitez utiliser les classes de modèle de document avec le modèle de persistance des objets pour effectuer des opérations de données. Pour plus d'informations sur les classes de modèles de documents fournies par le AWS SDK for .NET, consultez.NET : modèle de document.

Supposons que vous disposez d'une classe côté client mappée à l'exemple de table Forum. Vous pouvez ensuite utiliser un DynamoDBContext pour obtenir un élément en tant qu'objet Document à partir de la table Forum, comme illustré dans l'exemple de code C# suivant.

Exemple
DynamoDBContext context = new DynamoDBContext(client); Forum forum101 = context.Load<Forum>(101); // Retrieve a forum by primary key. Document doc = context.ToDocument<Forum>(forum101);

Spécification de paramètres facultatifs pour D ynamoDBContext

Lors de l'utilisation du modèle de persistance des objets, vous pouvez spécifier les paramètres facultatifs suivants pour le DynamoDBContext.

  • ConsistentReadLors de la récupération de données à l'aide des opérations Load, Query ou Scan, vous pouvez ajouter ce paramètre facultatif pour demander les dernières valeurs pour les données.

  • IgnoreNullValuesCe paramètre informe DynamoDBContext d'ignorer les valeurs null sur les attributs lors d'une opération Save. Si ce paramètre a la valeur false (ou s'il n'est pas défini), une valeur null est interprétée comme une directive pour supprimer l'attribut spécifique.

  • SkipVersionCheckCe paramètre informe DynamoDBContext ne pas comparer les versions lors de l'enregistrement ou de la suppression d'un élément. Pour plus d’informations sur la gestion des versions, 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.

  • TableNamePrefixPréfixe tous les noms de table avec une chaîne spécifique. Si ce paramètre a la valeur null (ou s'il n'est pas défini), aucun préfixe n'est utilisé.

  • DynamoDBEntryConversion— Spécifie le schéma de conversion utilisé par le client. Vous pouvez définir ce paramètre sur la version V1 ou V2. V1 est la version par défaut.

    En fonction de la version que vous définissez, le comportement de ce paramètre change. Par exemple :

    • Dans la version 1, le type de bool données est converti en type N numérique, où 0 représente faux et 1 représente vrai. En V2, bool est converti enBOOL.

    • Dans la version 2, les listes et les tableaux ne sont pas regroupés avec HashSets. Les listes et tableaux de nombres, de types basés sur des chaînes et de types binaires sont convertis au type L (Liste), qui peut être envoyé vide pour mettre à jour une liste. Ce n'est pas le cas de la V1, où une liste vide n'est pas envoyée par fil.

      Dans la version 1, les types de collection, tels que List HashSet, et les tableaux sont traités de la même manière. La liste et le tableau de chiffres sont convertis au type NS (ensemble de nombres). HashSet

    L'exemple suivant définit la version du schéma de conversion sur V2, ce qui modifie le comportement de conversion entre les deux. NETtypes et types de données DynamoDB.

    var config = new DynamoDBContextConfig { Conversion = DynamoDBEntryConversion.V2 }; var contextV2 = new DynamoDBContext(client, config);

L'exemple C# suivant crée un nouveau paramètre DynamoDBContext en spécifiant deux des paramètres facultatifs précédents, ConsistentRead etSkipVersionCheck.

Exemple
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); ... DynamoDBContext context = new DynamoDBContext(client, new DynamoDBContextConfig { ConsistentRead = true, SkipVersionCheck = true});

DynamoDBContext inclut ces paramètres facultatifs avec chaque demande que vous envoyez à l'aide de ce contexte.

Au lieu de définir ces paramètres au niveau de DynamoDBContext, vous pouvez les spécifier pour des opérations individuelles que vous exécutez à l'aide de DynamoDBContext, comme illustré dans l'exemple de code C# suivant. L'exemple charge un élément livre spécifique. La Load méthode de DynamoDBContext spécifie les paramètres SkipVersionCheck facultatifs ConsistentRead et.

Exemple
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); ... DynamoDBContext context = new DynamoDBContext(client); Book bookItem = context.Load<Book>(productId,new DynamoDBContextConfig{ ConsistentRead = true, SkipVersionCheck = true });

Dans ce cas, DynamoDBContext inclut ces paramètres uniquement lors de l'envoi de la demande Get.