AWS SDK for .NET 现在包括适用于 Xamarin 的 AWS Mobile SDK。本指南参考了适用于 Xamarin 的 Mobile SDK 的存档版本。
使用 DynamoDB 存储和检索数据
Amazon DynamoDB
以下教程介绍了如何将 DynamoDB 对象持久化模型 (用于将对象存储在 DynamoDB 中) 与您的应用集成。
项目设置
先决条件
在开始本教程前,必须先完成有关设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 的说明中的所有步骤。
创建 DynamoDB 表
在对 DynamoDB 数据库执行数据读写操作之前,您必须先创建一个表。创建表时,您必须指定主键。主键由哈希特性 (attribute) 和可选的范围特性组成。有关如何使用主特性和范围特性的更多信息,请参阅处理表。
-
转到 DynamoDB 控制台
,然后单击 Create Table (创建表)。此时将打开“Create Table”向导。 -
按如下所示指定表名称、主键类型(哈希)和哈希特性名称 (“Id”),然后单击 Continue (继续):
-
将下一个屏幕中的编辑字段留空,然后单击 Continue (继续)。
-
接受 Read Capacity Units (读取容量单元) 和 Write Capacity Units (写入容量单元) 的默认值,然后单击 Continue (继续)。
-
在下一个屏幕上,在 Send notification to: (发送通知到:) 文本框中输入您的电子邮件地址,然后单击 Continue (继续)。此时将打开“Review”屏幕。
-
单击 Create。创建表可能需要几分钟。
设置 DynamoDB 的权限
为了使身份池能够访问 Amazon DynamoDB,您必须修改身份池的角色。
-
导航到 Identity and Access Management 控制台
,然后在左侧窗格中单击 Roles (角色)。搜索身份池名称 – 将列出两个角色,一个用于未经身份验证的用户,另一个用于经过身份验证的用户。 -
单击用于未经过身份验证的用户(身份池名称后附加有“unauth”字样)的角色,然后单击 Create Role Policy (创建角色策略)。
-
选择 Policy Generator (策略生成器),然后单击 Select (选择)。
-
在 Edit Permissions (编辑权限) 页上,按下图所示输入设置。DynamoDB 表的 Amazon 资源名称 (ARN) 类似于
arn:aws:dynamodb:us-west-2:123456789012:table/Books
,由表所在的区域、所有者的 AWS 账号和表的名称构成,格式为table/Books
。有关指定 ARN 的更多信息,请参阅 DynamoDB 的 Amazon 资源名称。 -
单击 Add Statement (添加语句),然后单击 Next Step (下一步)。向导将向您显示生成的配置。
-
单击应用策略。
将 DynamoDB NuGet 程序包添加到项目中
按照设置适用于 .NET 和 Xamarin 的 AWS Mobile SDK 中第 4 步的说明操作,将 DynamoDB NuGet 程序包添加到您的项目中。
初始化 AmazonDynamoDBClient
将经过初始化的 Amazon Cognito 凭证提供程序和区域传递给 AmazonDynamoDB
构造函数,然后将客户端传递给 DynamoDBContext:
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。