Represents a set of primary keys and, for each key, the attributes to retrieve from the table.
public void BatchSamples() { EnsureTables(); { #region BatchGet Sample 1 // Define attributes to get and keys to retrieve List<string> attributesToGet = new List<string> { "Author", "Title", "Year" }; List<Dictionary<string, AttributeValue>> sampleTableKeys = new List<Dictionary<string, AttributeValue>> { new Dictionary<string, AttributeValue> { { "Author", new AttributeValue { S = "Mark Twain" } }, { "Title", new AttributeValue { S = "The Adventures of Tom Sawyer" } } }, new Dictionary<string, AttributeValue> { { "Author", new AttributeValue { S = "Mark Twain" } }, { "Title", new AttributeValue { S = "Adventures of Huckleberry Finn" } } } }; // Construct get-request for first table KeysAndAttributes sampleTableItems = new KeysAndAttributes { AttributesToGet = attributesToGet, Keys = sampleTableKeys }; #endregion #region BatchGet Sample 2 // Define keys to retrieve List<Dictionary<string, AttributeValue>> authorsTableKeys = new List<Dictionary<string, AttributeValue>> { new Dictionary<string, AttributeValue> { { "Author", new AttributeValue { S = "Mark Twain" } }, }, new Dictionary<string, AttributeValue> { { "Author", new AttributeValue { S = "Booker Taliaferro Washington" } }, } }; // Construct get-request for second table // Skip setting AttributesToGet property to retrieve all attributes KeysAndAttributes authorsTableItems = new KeysAndAttributes { Keys = authorsTableKeys, }; #endregion #region BatchGet Sample 3 // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Construct table-keys mapping Dictionary<string, KeysAndAttributes> requestItems = new Dictionary<string, KeysAndAttributes>(); requestItems["SampleTable"] = sampleTableItems; requestItems["AuthorsTable"] = authorsTableItems; // Construct request BatchGetItemRequest request = new BatchGetItemRequest { RequestItems = requestItems }; BatchGetItemResult result; do { // Issue request and retrieve items result = client.BatchGetItem(request); // Iterate through responses Dictionary<string, List<Dictionary<string, AttributeValue>>> responses = result.Responses; foreach (string tableName in responses.Keys) { // Get items for each table List<Dictionary<string, AttributeValue>> tableItems = responses[tableName]; // View items foreach (Dictionary<string, AttributeValue> item in tableItems) { Console.WriteLine("Item:"); foreach (var keyValuePair in item) { Console.WriteLine("{0} : S={1}, N={2}, SS=[{3}], NS=[{4}]", keyValuePair.Key, keyValuePair.Value.S, keyValuePair.Value.N, string.Join(", ", keyValuePair.Value.SS ?? new List<string>()), string.Join(", ", keyValuePair.Value.NS ?? new List<string>())); } } } // Some items may not have been retrieved! // Set RequestItems to the result's UnprocessedKeys and reissue request request.RequestItems = result.UnprocessedKeys; } while (result.UnprocessedKeys.Count > 0); #endregion } { #region BatchWrite Sample 1 // Create items to put into first table Dictionary<string, AttributeValue> item1 = new Dictionary<string, AttributeValue>(); item1["Author"] = new AttributeValue { S = "Mark Twain" }; item1["Title"] = new AttributeValue { S = "A Connecticut Yankee in King Arthur's Court" }; item1["Pages"] = new AttributeValue { N = "575" }; Dictionary<string, AttributeValue> item2 = new Dictionary<string, AttributeValue>(); item2["Author"] = new AttributeValue { S = "Booker Taliaferro Washington" }; item2["Title"] = new AttributeValue { S = "My Larger Education" }; item2["Pages"] = new AttributeValue { N = "313" }; item2["Year"] = new AttributeValue { N = "1911" }; // Create key for item to delete from first table // Hash-key of the target item is string value "Mark Twain" // Range-key of the target item is string value "Tom Sawyer, Detective" Dictionary<string, AttributeValue> keyToDelete1 = new Dictionary<string, AttributeValue> { { "Author", new AttributeValue { S = "Mark Twain" } }, { "Title", new AttributeValue { S = "Tom Sawyer, Detective" } } }; // Construct write-request for first table List<WriteRequest> sampleTableItems = new List<WriteRequest>(); sampleTableItems.Add(new WriteRequest { PutRequest = new PutRequest { Item = item1 } }); sampleTableItems.Add(new WriteRequest { PutRequest = new PutRequest { Item = item2 } }); sampleTableItems.Add(new WriteRequest { DeleteRequest = new DeleteRequest { Key = keyToDelete1 } }); #endregion #region BatchWrite Sample 2 // Create key for item to delete from second table // Hash-key of the target item is string value "Francis Scott Key Fitzgerald" Dictionary<string, AttributeValue> keyToDelete2 = new Dictionary<string, AttributeValue> { { "Author", new AttributeValue { S = "Francis Scott Key Fitzgerald" } }, }; // Construct write-request for first table List<WriteRequest> authorsTableItems = new List<WriteRequest>(); authorsTableItems.Add(new WriteRequest { DeleteRequest = new DeleteRequest { Key = keyToDelete2 } }); #endregion #region BatchWrite Sample 3 // Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Construct table-keys mapping Dictionary<string, List<WriteRequest>> requestItems = new Dictionary<string, List<WriteRequest>>(); requestItems["SampleTable"] = sampleTableItems; requestItems["AuthorsTable"] = authorsTableItems; BatchWriteItemRequest request = new BatchWriteItemRequest { RequestItems = requestItems }; BatchWriteItemResult result; do { // Issue request and retrieve items result = client.BatchWriteItem(request); // Some items may not have been processed! // Set RequestItems to the result's UnprocessedItems and reissue request request.RequestItems = result.UnprocessedItems; } while (result.UnprocessedItems.Count > 0); #endregion } }