Beispiel: CRUD-Operationen mit dem AWS SDK for .NET -Dokumentmodell - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiel: CRUD-Operationen mit dem AWS SDK for .NET -Dokumentmodell

Das folgende C#-Codebeispiel führt die folgenden Aktionen aus:

  • Erstellen eines Buchelements in der ProductCatalog-Tabelle.

  • Abruf des Buchelements.

  • Aktualisieren des Buchelements. Das Codebeispiel zeigt eine normale Aktualisierung, die neue Attribute und Aktualisierungen bestehender Attribute hinzufügt. Außerdem zeigt es eine bedingte Aktualisierung, die nur dann den Buchpreis aktualisiert, wenn der vorhandene Preiswert im Code angegeben wird.

  • Löschen des Buchelements.

step-by-step Anweisungen zum Testen des folgenden Beispiels finden Sie unter. NETCodebeispiele.

Beispiel

Das Folgende funktioniert für.NET Framework, aber für .NET Core müssen Sie die PutItemAsync() Methode verwenden.

using System; using System.Collections.Generic; using System.Linq; using Amazon.DynamoDBv2; using Amazon.DynamoDBv2.DocumentModel; using Amazon.Runtime; namespace com.amazonaws.codesamples { class MidlevelItemCRUD { private static AmazonDynamoDBClient client = new AmazonDynamoDBClient(); private static string tableName = "ProductCatalog"; // The sample uses the following id PK value to add book item. private static int sampleBookId = 555; static void Main(string[] args) { try { Table productCatalog = Table.LoadTable(client, tableName); CreateBookItem(productCatalog); RetrieveBook(productCatalog); // Couple of sample updates. UpdateMultipleAttributes(productCatalog); UpdateBookPriceConditionally(productCatalog); // Delete. DeleteBook(productCatalog); Console.WriteLine("To continue, press Enter"); Console.ReadLine(); } catch (AmazonDynamoDBException e) { Console.WriteLine(e.Message); } catch (AmazonServiceException e) { Console.WriteLine(e.Message); } catch (Exception e) { Console.WriteLine(e.Message); } } // Creates a sample book item. private static void CreateBookItem(Table productCatalog) { Console.WriteLine("\n*** Executing CreateBookItem() ***"); var book = new Document(); book["Id"] = sampleBookId; book["Title"] = "Book " + sampleBookId; book["Price"] = 19.99; book["ISBN"] = "111-1111111111"; book["Authors"] = new List<string> { "Author 1", "Author 2", "Author 3" }; book["PageCount"] = 500; book["Dimensions"] = "8.5x11x.5"; book["InPublication"] = new DynamoDBBool(true); book["InStock"] = new DynamoDBBool(false); book["QuantityOnHand"] = 0; productCatalog.PutItem(book); } private static void RetrieveBook(Table productCatalog) { Console.WriteLine("\n*** Executing RetrieveBook() ***"); // Optional configuration. GetItemOperationConfig config = new GetItemOperationConfig { AttributesToGet = new List<string> { "Id", "ISBN", "Title", "Authors", "Price" }, ConsistentRead = true }; Document document = productCatalog.GetItem(sampleBookId, config); Console.WriteLine("RetrieveBook: Printing book retrieved..."); PrintDocument(document); } private static void UpdateMultipleAttributes(Table productCatalog) { Console.WriteLine("\n*** Executing UpdateMultipleAttributes() ***"); Console.WriteLine("\nUpdating multiple attributes...."); int partitionKey = sampleBookId; var book = new Document(); book["Id"] = partitionKey; // List of attribute updates. // The following replaces the existing authors list. book["Authors"] = new List<string> { "Author x", "Author y" }; book["newAttribute"] = "New Value"; book["ISBN"] = null; // Remove it. // Optional parameters. UpdateItemOperationConfig config = new UpdateItemOperationConfig { // Get updated item in response. ReturnValues = ReturnValues.AllNewAttributes }; Document updatedBook = productCatalog.UpdateItem(book, config); Console.WriteLine("UpdateMultipleAttributes: Printing item after updates ..."); PrintDocument(updatedBook); } private static void UpdateBookPriceConditionally(Table productCatalog) { Console.WriteLine("\n*** Executing UpdateBookPriceConditionally() ***"); int partitionKey = sampleBookId; var book = new Document(); book["Id"] = partitionKey; book["Price"] = 29.99; // For conditional price update, creating a condition expression. Expression expr = new Expression(); expr.ExpressionStatement = "Price = :val"; expr.ExpressionAttributeValues[":val"] = 19.00; // Optional parameters. UpdateItemOperationConfig config = new UpdateItemOperationConfig { ConditionalExpression = expr, ReturnValues = ReturnValues.AllNewAttributes }; Document updatedBook = productCatalog.UpdateItem(book, config); Console.WriteLine("UpdateBookPriceConditionally: Printing item whose price was conditionally updated"); PrintDocument(updatedBook); } private static void DeleteBook(Table productCatalog) { Console.WriteLine("\n*** Executing DeleteBook() ***"); // Optional configuration. DeleteItemOperationConfig config = new DeleteItemOperationConfig { // Return the deleted item. ReturnValues = ReturnValues.AllOldAttributes }; Document document = productCatalog.DeleteItem(sampleBookId, config); Console.WriteLine("DeleteBook: Printing deleted just deleted..."); PrintDocument(document); } private static void PrintDocument(Document updatedDocument) { foreach (var attribute in updatedDocument.GetAttributeNames()) { string stringValue = null; var value = updatedDocument[attribute]; if (value is Primitive) stringValue = value.AsPrimitive().Value.ToString(); else if (value is PrimitiveList) stringValue = string.Join(",", (from primitive in value.AsPrimitiveList().Entries select primitive.Value).ToArray()); Console.WriteLine("{0} - {1}", attribute, stringValue); } } } }