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 à partir du. NETmodèle de persistance des objets
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.
Rubriques
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.
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.
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, consultezTravailler avec le. NETmodèle de document dans DynamoDB.
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 de lecture DynamoDB.
Load
ou 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
.
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 de DynamoDB et du modèle de persistance des objets AWS SDK for .NET.
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, consultezTravailler avec le. NETmodèle de document dans DynamoDB.
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
.
-
ConsistentRead
– Lors de la récupération de données à l'aide des opérationsLoad
,Query
ouScan
, vous pouvez ajouter ce paramètre facultatif pour demander les dernières valeurs pour les données. -
IgnoreNullValues
– Ce paramètre informeDynamoDBContext
d'ignorer les valeurs null sur les attributs lors d'une opérationSave
. 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. -
SkipVersionCheck
– Ce paramètre informeDynamoDBContext
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 de DynamoDB et du modèle de persistance des objets AWS SDK for .NET. -
TableNamePrefix
– Pré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 typeN
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
.