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 des objets :. NET
Vous pouvez utiliser le AWS SDK for .NET bas niveau API pour effectuer des opérations classiques de création, de lecture, de mise à jour et de suppression (CRUD) sur un élément d'une table. Voici les étapes courantes que vous devez suivre pour effectuer des CRUD opérations sur les données à l'aide du. NETbas niveau API :
-
Créez une instance de la classe
AmazonDynamoDBClient
(le client). -
Fournissez les paramètres obligatoires spécifiques de l'opération dans un objet de demande correspondant.
Par exemple, utilisez l'objet de demande
PutItemRequest
lors du chargement d'un élément, et l'objet de demandeGetItemRequest
lors de l'extraction d'un élément existant.Vous pouvez utiliser l'objet de demande pour fournir les paramètres obligatoires et facultatifs.
-
Exécutez la méthode appropriée fournie par le client en passant l'objet de demande que vous avez créé à l'étape précédente.
Le
AmazonDynamoDBClient
client fournitPutItem
,GetItem
UpdateItem
, et lesDeleteItem
méthodes pour les CRUD opérations.
Rubriques
- Placement d'un élément
- Obtention d'un élément
- Mise à jour d'un élément
- Compteurs atomiques
- Suppression d'un élément
- Écriture par lots : insertion et suppression de plusieurs éléments
- Obtention par lots : obtention de plusieurs éléments
- Exemple : CRUD opérations utilisant le AWS SDK for .NET bas niveau API
- Exemple : opérations par lots utilisant le AWS SDK for .NET bas niveau API
- Exemple : gestion des attributs de type binaire à l'aide du AWS SDK for .NET bas niveau API
Placement d'un élément
La méthode PutItem
charge un élément dans une table. Si l'élément existe, il remplace la totalité de l'élément.
Note
Au lieu de remplacer l'élément entier, si vous souhaitez mettre à jour uniquement des attributs spécifiques, vous pouvez utiliser la méthode UpdateItem
. Pour de plus amples informations, veuillez consulter Mise à jour d'un élément.
Voici les étapes à suivre pour télécharger un article à l'aide du bas niveau. NETSDKAPI:
-
Créez une instance de la classe
AmazonDynamoDBClient
. -
Fournissez les paramètres obligatoires en créant une instance de la classe
PutItemRequest
.Pour insérer un élément, vous devez fournir le nom de la table et l'élément.
-
Appelez la méthode
PutItem
en fournissant les objetsPutItemRequest
que vous avez créés à l'étape précédente.
L'exemple de code C# suivant illustre les étapes précédentes. L'exemple charge un élément dans la table ProductCatalog
.
Exemple
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new PutItemRequest { TableName = tableName, Item = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "201" }}, { "Title", new AttributeValue { S = "Book 201 Title" }}, { "ISBN", new AttributeValue { S = "11-11-11-11" }}, { "Price", new AttributeValue { S = "20.00" }}, { "Authors", new AttributeValue { SS = new List<string>{"Author1", "Author2"} } } } }; client.PutItem(request);
Dans l'exemple précédent, vous chargez un élément book (livre) qui possède les attributs Id
, Title
, ISBN
et Authors
. Notez que Id
est un attribut de type numérique, et que tous les autres attributs sont de type String (chaîne). Authors est un ensemble String
.
Spécification de paramètres facultatifs
Vous pouvez également fournir des paramètres facultatifs à l'aide de l'objet PutItemRequest
, comme illustré dans l'exemple C# suivant. L'échantillon spécifie les paramètres facultatifs suivants :
-
ExpressionAttributeNames
ExpressionAttributeValues
, etConditionExpression
spécifiez que l'article ne peut être remplacé que si l'élément existant possède l'ISBNattribut avec une valeur spécifique. -
Paramètre
ReturnValues
pour demander l'ancien élément dans la réponse.
Exemple
var request = new PutItemRequest { TableName = tableName, Item = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "104" }}, { "Title", new AttributeValue { S = "Book 104 Title" }}, { "ISBN", new AttributeValue { S = "444-4444444444" }}, { "Authors", new AttributeValue { SS = new List<string>{"Author3"}}} }, // Optional parameters. ExpressionAttributeNames = new Dictionary<string,string>() { {"#I", "ISBN"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":isbn",new AttributeValue {S = "444-4444444444"}} }, ConditionExpression = "#I = :isbn" }; var response = client.PutItem(request);
Pour plus d'informations, consultez PutItem.
Obtention d'un élément
La méthode GetItem
extrait un élément.
Note
Pour extraire plusieurs éléments, vous pouvez utiliser la méthode BatchGetItem
. Pour de plus amples informations, veuillez consulter Obtention par lots : obtention de plusieurs éléments.
Voici les étapes à suivre pour récupérer un élément existant à l'aide du niveau inférieur AWS SDK for .NET API.
-
Créez une instance de la classe
AmazonDynamoDBClient
. -
Fournissez les paramètres obligatoires en créant une instance de la classe
GetItemRequest
.Pour obtenir un élément, vous devez fournir le nom de la table et la clé primaire de l'élément.
-
Appelez la méthode
GetItem
en fournissant les objetsGetItemRequest
que vous avez créés à l'étape précédente.
L'exemple de code C# suivant illustre les étapes précédentes. L'exemple extrait un élément de la table ProductCatalog
.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new GetItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, }; var response = client.GetItem(request); // Check the response. var result = response.GetItemResult; var attributeMap = result.Item; // Attribute list in the response.
Spécification de paramètres facultatifs
Vous pouvez également fournir des paramètres facultatifs à l'aide de l'objet GetItemRequest
, comme illustré dans l'exemple C# suivant. L'exemple spécifie les paramètres facultatifs suivants :
-
Paramètre
ProjectionExpression
pour spécifier les attributs à extraire. -
Paramètre
ConsistentRead
pour effectuer une lecture fortement cohérente. Pour en savoir plus sur la cohérence de lecture, consultez Cohérence de lecture DynamoDB.
Exemple
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new GetItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, // Optional parameters. ProjectionExpression = "Id, ISBN, Title, Authors", ConsistentRead = true }; var response = client.GetItem(request); // Check the response. var result = response.GetItemResult; var attributeMap = result.Item;
Pour plus d'informations, consultez GetItem.
Mise à jour d'un élément
La méthode UpdateItem
met à jour un élément existant s'il est présent. Vous pouvez utiliser l'opération UpdateItem
pour mettre à jour des valeurs d'attribut existantes, ajouter des attributs ou supprimer des attributs dans la collection existante. Si l'élément qui possède la clé primaire spécifiée est introuvable, l'opération ajoute un nouvel élément.
L'opération UpdateItem
suit les directives suivantes :
-
Si l'élément n'existe pas,
UpdateItem
ajoute un nouvel élément à l'aide de la clé primaire spécifiée dans l'entrée. -
Si l'élément existe,
UpdateItem
applique les mises à jour comme suit :-
Remplace les valeurs d'attribut existantes par les valeurs figurant dans la mise à jour.
-
Si un attribut que vous fournissez en entrée n'existe pas, l'opération ajoute un nouvel attribut à l'élément.
-
Si l'attribut en entrée a la valeur null, elle supprime l'attribut s'il est présent.
-
Si vous utilisez
ADD
pourAction
, vous pouvez ajouter des valeurs à un ensemble existant (ensemble de chaînes ou de nombres), ou bien ajouter (utiliser un nombre positif) ou soustraire (utiliser un nombre négatif) mathématiquement de façon à augmenter ou réduire la valeur de l'attribut numérique existant.
-
Note
L'opération PutItem
peut également effectuer une mise à jour. Pour de plus amples informations, veuillez consulter Placement d'un élément. Par exemple, si vous appelez PutItem
pour charger un élément et que la clé primaire existe, l'opération PutItem
remplace l'élément entier. Si l'élément existant contient des attributs qui ne sont pas spécifiés dans l'entrée, l'opération PutItem
supprime ces attributs. Toutefois, l'opération UpdateItem
ne met à jour que les attributs d'entrée spécifiés. Tous les autres attributs de cet élément demeurent inchangés.
Voici les étapes à suivre pour mettre à jour un élément existant à l'aide du niveau inférieur. NETSDKAPI:
-
Créez une instance de la classe
AmazonDynamoDBClient
. -
Fournissez les paramètres obligatoires en créant une instance de la classe
UpdateItemRequest
.Il s'agit de l'objet de demande dans lequel vous décrivez toutes les mises à jour, telles que l'ajout d'attributs, la mise à jour d'attributs ou la suppression d'attributs. Pour supprimer un attribut, spécifiez son nom avec la valeur null.
-
Appelez la méthode
UpdateItem
en fournissant les objetsUpdateItemRequest
que vous avez créés à l'étape précédente.
L'exemple de code C# suivant présente les étapes précédentes. L'exemple de code met à jour un élément book (livre) dans la table ProductCatalog
. Il ajoute un nouvel auteur à la collection Authors
et supprime l'attribut ISBN
existant. Il permet également de réduire le prix d'un niveau.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, ExpressionAttributeNames = new Dictionary<string,string>() { {"#A", "Authors"}, {"#P", "Price"}, {"#NA", "NewAttribute"}, {"#I", "ISBN"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":auth",new AttributeValue { SS = {"Author YY","Author ZZ"}}}, {":p",new AttributeValue {N = "1"}}, {":newattr",new AttributeValue {S = "someValue"}}, }, // This expression does the following: // 1) Adds two new authors to the list // 2) Reduces the price // 3) Adds a new attribute to the item // 4) Removes the ISBN attribute from the item UpdateExpression = "ADD #A :auth SET #P = #P - :p, #NA = :newattr REMOVE #I" }; var response = client.UpdateItem(request);
Spécification de paramètres facultatifs
Vous pouvez également fournir des paramètres facultatifs à l'aide de l'objet UpdateItemRequest
, comme illustré dans l'exemple C# suivant. Il spécifie les deux paramètres facultatifs suivants :
-
ExpressionAttributeValues
etConditionExpression
pour spécifier que le prix peut être mis à jour uniquement s'il est de 20,00. -
Paramètre
ReturnValues
pour demander l'élément mis à jour dans la réponse.
Exemple
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, // Update price only if the current price is 20.00. ExpressionAttributeNames = new Dictionary<string,string>() { {"#P", "Price"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":newprice",new AttributeValue {N = "22"}}, {":currprice",new AttributeValue {N = "20"}} }, UpdateExpression = "SET #P = :newprice", ConditionExpression = "#P = :currprice", TableName = tableName, ReturnValues = "ALL_NEW" // Return all the attributes of the updated item. }; var response = client.UpdateItem(request);
Pour plus d'informations, consultez UpdateItem.
Compteurs atomiques
Vous pouvez utiliser updateItem
pour implémenter un compteur atomique, où vous incrémentez ou décrémentez la valeur d'un attribut existant sans interférer avec d'autres demandes d'écriture. Pour mettre à jour un compteur atomique, utilisez updateItem
avec un attribut de type Number
dans le paramètre UpdateExpression
, et ADD
pour Action
.
L'extrait de code suivant illustre cette action, en incrémentant l'attribut Quantity
d'une unité.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { Key = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "121" } } }, ExpressionAttributeNames = new Dictionary<string, string>() { {"#Q", "Quantity"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":incr",new AttributeValue {N = "1"}} }, UpdateExpression = "SET #Q = #Q + :incr", TableName = tableName }; var response = client.UpdateItem(request);
Suppression d'un élément
La méthode DeleteItem
supprime un élément d'une table.
Voici les étapes à suivre pour supprimer un élément à l'aide du niveau inférieur. NETSDKAPI.
-
Créez une instance de la classe
AmazonDynamoDBClient
. -
Fournissez les paramètres obligatoires en créant une instance de la classe
DeleteItemRequest
.Pour supprimer un élément, le nom de la table et la clé primaire de l'élément sont requis.
-
Appelez la méthode
DeleteItem
en fournissant les objetsDeleteItemRequest
que vous avez créés à l'étape précédente.
Exemple
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new DeleteItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "201" } } }, }; var response = client.DeleteItem(request);
Spécification de paramètres facultatifs
Vous pouvez également fournir des paramètres facultatifs à l'aide de l'objet DeleteItemRequest
, comme illustré dans l'exemple de code C# suivant. Il spécifie les deux paramètres facultatifs suivants :
-
ExpressionAttributeValues
etConditionExpression
pour spécifier que l'élément du livre ne peut être supprimé que s'il n'est plus en cours de publication (la valeur de InPublication l'attribut est fausse). -
Paramètre
ReturnValues
pour demander l'élément supprimé dans la réponse.
Exemple
var request = new DeleteItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "201" } } }, // Optional parameters. ReturnValues = "ALL_OLD", ExpressionAttributeNames = new Dictionary<string, string>() { {"#IP", "InPublication"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":inpub",new AttributeValue {BOOL = false}} }, ConditionExpression = "#IP = :inpub" }; var response = client.DeleteItem(request);
Pour plus d'informations, consultez DeleteItem.
Écriture par lots : insertion et suppression de plusieurs éléments
L'écriture par lots fait référence à l'insertion et la suppression de plusieurs éléments dans un lot. La méthode BatchWriteItem
vous permet d'insérer et de supprimer plusieurs éléments d'une ou de plusieurs tables en un seul appel. Voici les étapes à suivre pour récupérer plusieurs éléments à l'aide du bas niveau. NETSDKAPI.
-
Créez une instance de la classe
AmazonDynamoDBClient
. -
Décrivez toutes les opérations d'insertion et de suppression en créant une instance de la classe
BatchWriteItemRequest
. -
Appelez la méthode
BatchWriteItem
en fournissant les objetsBatchWriteItemRequest
que vous avez créés à l'étape précédente. -
Traitez la réponse. Vous devez vérifier si des éléments de requêtes non traités ont été renvoyés dans la réponse. Cela peut se produire si vous atteignez le quota de débit alloué ou une autre erreur temporaire. En outre, DynamoDB limite la taille de demande et le nombre d'opérations que vous pouvez spécifier dans une demande. Si vous dépassez ces limites, DynamoDB rejette la demande. Pour plus d'informations, consultez BatchWriteItem.
L'exemple de code C# suivant présente les étapes précédentes. L'exemple crée une BatchWriteItemRequest
pour effectuer les opérations d'écriture suivantes :
-
Insérer un élément dans la table
Forum
. -
Insérer et supprimer un élément dans la table
Thread
.
Le code exécute BatchWriteItem
pour effectuer une opération par lot.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; string table2Name = "Thread"; var request = new BatchWriteItemRequest { RequestItems = new Dictionary<string, List<WriteRequest>> { { table1Name, new List<WriteRequest> { new WriteRequest { PutRequest = new PutRequest { Item = new Dictionary<string,AttributeValue> { { "Name", new AttributeValue { S = "Amazon S3 forum" } }, { "Threads", new AttributeValue { N = "0" }} } } } } } , { table2Name, new List<WriteRequest> { new WriteRequest { PutRequest = new PutRequest { Item = new Dictionary<string,AttributeValue> { { "ForumName", new AttributeValue { S = "Amazon S3 forum" } }, { "Subject", new AttributeValue { S = "My sample question" } }, { "Message", new AttributeValue { S = "Message Text." } }, { "KeywordTags", new AttributeValue { SS = new List<string> { "Amazon S3", "Bucket" } } } } } }, new WriteRequest { DeleteRequest = new DeleteRequest { Key = new Dictionary<string,AttributeValue>() { { "ForumName", new AttributeValue { S = "Some forum name" } }, { "Subject", new AttributeValue { S = "Some subject" } } } } } } } } }; response = client.BatchWriteItem(request);
Pour obtenir un exemple pratique, consultez Exemple : opérations par lots utilisant le AWS SDK for .NET bas niveau API.
Obtention par lots : obtention de plusieurs éléments
La méthode BatchGetItem
vous permet de récupérer plusieurs éléments d'une ou de plusieurs tables.
Note
Pour récupérer un seul élément, vous pouvez utiliser la méthode GetItem
.
Voici les étapes à suivre pour récupérer plusieurs éléments à l'aide du bas niveau AWS SDK for .NET API.
-
Créez une instance de la classe
AmazonDynamoDBClient
. -
Fournissez les paramètres obligatoires en créant une instance de la classe
BatchGetItemRequest
.Pour extraire plusieurs éléments, le nom de la table et une liste de valeurs de clé primaire sont requis.
-
Appelez la méthode
BatchGetItem
en fournissant les objetsBatchGetItemRequest
que vous avez créés à l'étape précédente. -
Traitez la réponse. Vous devez vérifier s'il existe des clés non traitées, ce qui peut se produire si vous atteignez le quota de débit alloué ou autre erreur temporaire.
L'exemple de code C# suivant présente les étapes précédentes. L'exemple extrait les éléments de deux tables, Forum
et Thread
. La demande spécifie deux éléments dans la table Forum
et trois éléments dans la table Thread
. La réponse inclut des éléments des deux tables. Le code montre comment vous pouvez traiter la réponse.
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; string table2Name = "Thread"; var request = new BatchGetItemRequest { RequestItems = new Dictionary<string, KeysAndAttributes>() { { table1Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "DynamoDB" } } }, new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "Amazon S3" } } } } } }, { table2Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "DynamoDB" } }, { "Subject", new AttributeValue { S = "DynamoDB Thread 1" } } }, new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "DynamoDB" } }, { "Subject", new AttributeValue { S = "DynamoDB Thread 2" } } }, new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "Amazon S3" } }, { "Subject", new AttributeValue { S = "Amazon S3 Thread 1" } } } } } } } }; var response = client.BatchGetItem(request); // Check the response. var result = response.BatchGetItemResult; var responses = result.Responses; // The attribute list in the response. var table1Results = responses[table1Name]; Console.WriteLine("Items in table {0}" + table1Name); foreach (var item1 in table1Results.Items) { PrintItem(item1); } var table2Results = responses[table2Name]; Console.WriteLine("Items in table {1}" + table2Name); foreach (var item2 in table2Results.Items) { PrintItem(item2); } // Any unprocessed keys? could happen if you exceed ProvisionedThroughput or some other error. Dictionary<string, KeysAndAttributes> unprocessedKeys = result.UnprocessedKeys; foreach (KeyValuePair<string, KeysAndAttributes> pair in unprocessedKeys) { Console.WriteLine(pair.Key, pair.Value); }
Spécification de paramètres facultatifs
Vous pouvez également fournir des paramètres facultatifs à l'aide de l'objet BatchGetItemRequest
, comme illustré dans l'exemple de code C# suivant. L'exemple extrait deux éléments de la table Forum
. Il spécifie le paramètre facultatif suivant :
-
Paramètre
ProjectionExpression
pour spécifier les attributs à extraire.
Exemple
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; var request = new BatchGetItemRequest { RequestItems = new Dictionary<string, KeysAndAttributes>() { { table1Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "DynamoDB" } } }, new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "Amazon S3" } } } } }, // Optional - name of an attribute to retrieve. ProjectionExpression = "Title" } } }; var response = client.BatchGetItem(request);
Pour plus d'informations, consultez BatchGetItem.