View a markdown version of this page

使用 DynamoDB 存储和检索数据 - AWS Mobile SDK

适用于 Xamarin 的 AWS 移动 SDK 现已包含在. 适用于 .NET 的 AWS SDK本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 DynamoDB 存储和检索数据

Amazon DynamoDB 是一项快速、高度可扩展、高度可用且经济实惠的非关系数据库服务。DynamoDB 消除了传统上对数据存储可扩展性的限制,同时保留了低延迟性和可预测的性能。

以下教程介绍了如何将 DynamoDB 对象持久化模型 (用于将对象存储在 DynamoDB 中) 与您的应用集成。

项目设置

先决条件

在开始本教程前,必须先完成有关设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 的说明中的所有步骤。

创建 DynamoDB 表

在对 DynamoDB 数据库执行数据读写操作之前,您必须先创建一个表。创建表时,您必须指定主键。主键由哈希特性 (attribute) 和可选的范围特性组成。有关如何使用主特性和范围特性的更多信息,请参阅处理表。

  1. 转到 DynamoDB 控制台,然后单击 Create Table (创建表)。此时将打开“Create Table”向导。

  2. 按如下所示指定表名称、主键类型(哈希)和哈希特性名称 (“Id”),然后单击 Continue (继续):

  3. 将下一个屏幕中的编辑字段留空,然后单击 Continue (继续)。

  4. 接受 Read Capacity Units (读取容量单元) 和 Write Capacity Units (写入容量单元) 的默认值,然后单击 Continue (继续)。

  5. 在下一个屏幕上,在 Send notification to: (发送通知到:) 文本框中输入您的电子邮件地址,然后单击 Continue (继续)。此时将打开“Review”屏幕。

  6. 单击创建。创建表可能需要几分钟。

设置 DynamoDB 的权限

为了使身份池能够访问 Amazon DynamoDB,您必须修改身份池的角色。

  1. 导航到 Identity and Access Management 控制台,然后在左侧窗格中单击 Roles (角色)。搜索身份池名称 – 将列出两个角色,一个用于未经身份验证的用户,另一个用于经过身份验证的用户。

  2. 单击用于未经过身份验证的用户(身份池名称后附加有“unauth”字样)的角色,然后单击 Create Role Policy (创建角色策略)。

  3. 选择 Policy Generator (策略生成器),然后单击 Select (选择)。

  4. 在 Edit Permissions (编辑权限) 页上,按下图所示输入设置。DynamoDB 表的 Amazon 资源名称 (ARN) 类似于 arn:aws:dynamodb:us-west-2:123456789012:table/Books,由表所在的区域、所有者的 AWS 账号和表的名称构成,格式为 table/Books。有关指定的更多信息 ARNs,请参阅 DynamoDB 的亚马逊资源名称。

  5. 单击 Add Statement (添加语句),然后单击 Next Step (下一步)。向导将向您显示生成的配置。

  6. 单击应用策略。

将 DynamoDB NuGet 软件包添加到您的项目中

按照设置适用于.NET 和 Xamarin 的 AWS 移动软件开发工具包中说明的第 4 步,将 Dyn amoDB NuGet 软件包添加到您的项目中。

初始化 AmazonDynamo DBClient

将初始化的 Amazon Cognito 凭证提供程序和您的区域传递给AmazonDynamoDB构造函数,然后将客户端传递给 Dynamo:DBContext

var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);

创建类

要向表中写入行,请定义一个类以保存行数据。该类还应包含用于保存行特性 (attribute) 数据的属性 (property),并将映射到在控制台中创建的 DynamoDB 表。以下类声明说明了这种类:

[DynamoDBTable("Books")] public class Book { [DynamoDBHashKey] // Hash key. public int Id { get; set; } public string Title { get; set; } public string ISBN { get; set; } public int Price { get; set; } public string PageCount { get; set; } public string Author{ get; set; } }

保存项目

要保存项目,请先创建一个对象:

Book songOfIceAndFire = new Book() { Id=1, Title="Game Of Thrones", ISBN="978-0553593716", Price=4, PageCount="819", Author="GRRM" };

然后保存。

context.Save(songOfIceAndFire);

要更新行,请修改 DDTableRow 类的实例,并按如上所示调用 AWSDynamoObjectMapper.save()。

检索项目

使用主键检索项目:

Book retrievedBook = context.Load<Book>(1);

更新项目

如何更新项目:

Book retrievedBook = context.Load<Book>(1); retrievedBook.ISBN = "978-0553593716"; context.Save(retrievedBook);

删除项目

如何删除项目:

Book retrievedBook = context.Load<Book>(1); context.Delete(retrievedBook);

有关从 Xamarin 应用程序访问 DynamoDB 的更多信息,请参阅 Amazon DynamoDB。