Amazon DynamoDB
开发人员指南 (API Version 2012-08-10)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

.NET:对象持久化模型

适用于 .NET 的 AWS 开发工具包提供的对象持久化模型让您能够将客户端类映射到 DynamoDB 表。然后,每个数据元实例都可以映射到对应表中的项目。为了在表中保存您的客户端数据元,对象持久化模型提供了 DynamoDBContext 类,这是 DynamoDB 的入口点。这个类提供到 DynamoDB 的连接,让您能够访问表、执行各种 CRUD 操作,以及执行查询。

对象持久化模型提供一系列属性,用于将客户端类映射到表和将属性/字段映射到表的属性。

注意

对象持久化模型不提供用于创建、更新或删除表的 API。它只提供数据操作。您只能使用适用于 .NET 的 AWS 开发工具包低级 API 创建、更新和删除表。有关更多信息,请参阅 处理表:.NET

为了向您说明对象持久化模型的工作原理,让我们完整研究一个示例。首先,我们有一个 ProductCatalog 表。该表使用 Id 作为主键。

Copy
ProductCatalog(Id, ...)

假如您有一个 Book 类,它具有 Title、ISBN 和 Authors 属性。您可以通过添加由对象持久化模型定义的属性将 Book 类映射到 ProductCatalog 表,如以下 C# 代码段所示。

Copy
[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } public string Title { get; set; } public int ISBN { get; set; } [DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; } [DynamoDBIgnore] public string CoverPage { get; set; } }

在上述示例中,DynamoDBTable 属性将 Book 类映射到 ProductCatalog 表。

对象持久化模型支持类属性和表属性之间的明确映射和默认映射。

  • 明确映射 – 要将属性映射到主键,您必须使用 DynamoDBHashKeyDynamoDBRangeKey 对象持久化模型属性。此外,对于非主键属性,如果类中的属性名称与其映射到的对应表的属性名称不同,那么您必须通过明确添加 DynamoDBProperty 属性定义这一映射。

    在上述示例中,Id 属性映射到具有相同名称的主键,BookAuthors 属性映射到 ProductCatalog 表中的 Authors 属性。

  • 默认映射 – 默认情况下,对象持久化模型会将类属性映射到表中同名的属性。

    在上述示例中,TitleISBN 属性映射到 ProductCatalog 表中的同名属性。

您无需映射每个单一类属性。您可以通过添加 DynamoDBIgnore 属性来识别这些属性。当您将 Book 实例保存到表中时,DynamoDBContext 不包括 CoverPage 属性,它也不会在您检索图书实例时返回此属性。

您可以映射 .NET 基元类型 (例如 int 和 string) 的属性。只要您能提供相应的转换器将任意数据类型映射到某个 DynamoDB 类型,您就可以映射任何数据类型。要了解有关映射任意类型的更多信息,请参阅向 DynamoDB (使用适用于 .NET 的 AWS 开发工具包对象持久化模型) 映射任意数据

对象持久化模型支持乐观锁。在执行更新操作期间,它可确保您具有要更新的项目的最新副本。有关更多信息,请参阅 乐观锁 (使用版本号) 与 DynamoDB (使用适用于 .NET 的 AWS 开发工具包对象持久性模型) 配合使用

受支持数据类型

对象持久化模型支持一系列 .NET 基元数据类型、集合数据类型和其他任意数据类型。该模型支持以下基元数据类型。

  • bool

  • byte

  • char

  • DateTime

  • decimal

  • double

  • float

  • Int16

  • Int32

  • Int64

  • SByte

  • string

  • UInt16

  • UInt32

  • UInt64

对象持久化模型还支持 .NET 集合类型。DynamoDBContext 能够转换实体集合类型和简单的无格式旧 CLR 对象 (POCO)。

下表汇总了上述 .NET 类型到 DynamoDB 类型的映射。

.NET 基元类型 DynamoDB 类型

所有数字类型

N (数字类型)

所有字符串类型

S (字符串类型)

MemoryStream、byte[]

B (二进制类型)

布尔类型 N (数字类型),0 表示 false,1 表示 true。
集合类型 BS (二进制集) 类型、SS (字符串集) 类型和 NS (数字集) 类型
DateTime S (字符串类型)。DateTime 值存储为符合 ISO-8601 格式的字符串。

对象持久化模型也支持任意数据类型。但是,您必须提供转换器代码,才能将复杂类型映射到 DynamoDB 类型。

本页内容: