使用 DynamoDB 服务级别 API - AWS Mobile SDK

AWS SDK for .NET 现在包括适用于 Xamarin 的 AWS Mobile SDK。本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

使用 DynamoDB 服务级别 API

利用 Dynamo 服务级别 API,您可以创建、更新和删除表。您还可以使用该 API 对表中的项目执行典型的创建、读取、更新和删除 (CRUD) 操作。

创建 DynamoDB 客户端

创建 DynamoDB 客户端:

AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region);

CRUD 操作

保存项目

将项目保存到 DynamoDB 表中:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); // Define item attributes Dictionary<string, AttributeValue> attributes = new Dictionary<string, AttributeValue>(); // Author is hash-key attributes["Author"] = new AttributeValue { S = "Mark Twain" }; attributes["Title"] = new AttributeValue { S = "The Adventures of Tom Sawyer" }; attributes["PageCount"] = new AttributeValue { N = "275" }; attributes["Price"] = new AttributeValue{N = "10.00"}; attributes["Id"] = new AttributeValue{N="10"}; attributes["ISBN"] = new AttributeValue{S="111-1111111"}; // Create PutItem request PutItemRequest request = new PutItemRequest { TableName = "Books", Item = attributes }; // Issue PutItem request var response = await client.PutItemAsync(request);

检索项目

检索项目:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); Dictionary<string, AttributeValue> key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "10" } } }; // Create GetItem request GetItemRequest request = new GetItemRequest { TableName = "Books", Key = key, }; // Issue request var result = await client.GetItemAsync(request); // View response Console.WriteLine("Item:"); Dictionary<string, AttributeValue> item = result.Item; foreach (var keyValuePair in item) { Console.WriteLine("Author := {0}", item["Author"]); Console.WriteLine("Title := {0}", item["Title"]); Console.WriteLine("Price:= {0}", item["Price"]); Console.WriteLine("PageCount := {0}", item["PageCount"]); }

更新项目

如何更新项目:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); Dictionary<string, AttributeValue> key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "10" } } }; // Define attribute updates Dictionary<string, AttributeValueUpdate> updates = new Dictionary<string, AttributeValueUpdate>(); // Add a new string to the item's Genres SS attribute updates["Genres"] = new AttributeValueUpdate() { Action = AttributeAction.ADD, Value = new AttributeValue { SS = new List<string> { "Bildungsroman" } } }; // Create UpdateItem request UpdateItemRequest request = new UpdateItemRequest { TableName = "Books", Key = key, AttributeUpdates = updates }; // Issue request var response = await client.UpdateItemAsync(request);

删除项目

如何删除项目:

// Create a client AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials,region); Dictionary<string, AttributeValue> key = new Dictionary<string, AttributeValue> { { "Id", new AttributeValue { N = "10" } } }; // Create DeleteItem request DeleteItemRequest request = new DeleteItemRequest { TableName = "Books", Key = key }; // Issue request var response = await client.DeleteItemAsync(request);

查询和扫描

查询和检索作者为“Mark Twain”的所有图书:

public void Query(AWSCredentials credentials, RegionEndpoint region) { using(var client = new AmazonDynamoDBClient(credentials, region)) { var queryResponse = await client.QueryAsync(new QueryRequest() { TableName = "Books", IndexName = "Author-Title-index", KeyConditionExpression = "Author = :v_Id", ExpressionAttributeValues = new Dictionary < string, AttributeValue > { { ":v_Id", new AttributeValue { S = "Mark Twain" } } } }); queryResponse.Items.ForEach((i) = > { Console.WriteLine(i["Title"].S); }); } }

下面的扫描示例代码返回我们的表中的所有图书:

public void Scan(AWSCredentials credentials, RegionEndpoint region) { using(var client = new AmazonDynamoDBClient(credentials, region)) { var queryResponse = client.Scan(new ScanRequest() { TableName = "Books" }); queryResponse.Items.ForEach((i) = > { Console.WriteLine(i["Title"].S); }); } }