.NET:对象持久化模型 - Amazon DynamoDB
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

.NET:对象持久化模型

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

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

注意

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

以下示例说明了对象持久化模型的工作原理。它从 ProductCatalog 表开始。它使用 Id 作为主键。

ProductCatalog(Id, ...)

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

[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 属性映射到 Authors 表中的 ProductCatalog 属性。

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

    在上述示例中,属性 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 能够转换具体集合类型和简单的 Plain Old CLR 对象 (POCO)。

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

.NET 基元类型 DynamoDB 类型

所有数字类型

N(数字类型)

所有字符串类型

S(字符串类型)

MemoryStream,字节 []

B(二进制类型)

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

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

注意
  • 支持空二进制值。

  • 支持读取空字符串值。在写入 DynamoDB 时,字符串集类型的属性值中支持空字符串属性值。 从写入请求中删除列表或映射类型中包含的字符串类型的空字符串属性值和空字符串值