本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
.NET:对象持久化模型
主题
- DynamoDB 属性
- DynamoDBContext 类
- 受支持数据类型
- 通过 DynamoDB 使用 适用于 .NET 的 AWS 开发工具包 对象持久化模型对版本号乐观锁
- 使用 DynamoDB 对象持久化模型将任意数据映射到适用于 .NET 的 AWS 开发工具包
- 使用 适用于 .NET 的 AWS 开发工具包 对象持久化模型的批量操作
- 例如:使用 适用于 .NET 的 AWS 开发工具包 对象持久化模型的 CRUD 操作
- 例如:使用 适用于 .NET 的 AWS 开发工具包 对象持久化模型的批量写入操作
- 例如:使用 DynamoDB 对象持久化模型在 适用于 .NET 的 AWS 开发工具包 中查询和扫描
提供了一个对象持久化模型,使您能够将客户端类映射到 适用于 .NET 的 AWS 开发工具包 表。Amazon DynamoDB然后,每个对象实例映射到相应表中的项目。为了将您的客户端对象保存到表中,对象持久化模型提供了
DynamoDBContext
类,这是 DynamoDB 的入口点。此类为您提供了与 DynamoDB 的连接,使您能够访问表、执行各种 CRUD 操作以及运行查询。
对象持久化模型提供了一组属性,用于将客户端类映射到表,并将属性/字段映射到表属性。
对象持久化模型不提供用于创建、更新或删除表的 API。它仅提供数据操作。您只能使用 适用于 .NET 的 AWS 开发工具包 低级别 API 创建、更新和删除表。有关更多信息,请参阅在 .NET 中处理 DynamoDB 表。
以下示例说明了对象持久化模型的工作原理。它从 ProductCatalog
表开始。它使用 Id
作为主键。
ProductCatalog(Id, ...)
假设您有一个具有 Book
、Title
和 ISBN
属性的 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
表。
对象持久化模型支持类属性和表属性之间的显式和默认映射。
-
显式映射— 要将属性映射到主键,您必须使用
DynamoDBHashKey
和DynamoDBRangeKey
对象持久化模型属性。此外,对于非主键属性,如果类中的属性名称和要将其映射到的对应表属性不相同,则必须通过显式添加DynamoDBProperty
属性来定义映射。在上述示例中,
Id
属性映射到同名的主键,BookAuthors
属性映射到Authors
表中的ProductCatalog
属性。 -
默认映射—。默认情况下,对象持久化模型将类属性映射到表中同名的属性。
在上述示例中,属性
Title
和ISBN
映射到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 类型 |
---|---|
所有数字类型 |
|
所有字符串类型 |
|
MemoryStream,字节 [] |
|
bool | N (数字类型)。0 表示 false,1 表示 true。
|
集合类型 | BS (二进制集)类型、SS (字符串集)类型和 NS (数字集)类型
|
DateTime | S (字符串类型)。值存储为 ISO-8601 格式的字符串。DateTime |
对象持久化模型还支持任意数据类型。但是,您必须提供转换器代码以将复杂类型映射到 DynamoDB 类型。
-
支持空二进制值。
-
支持读取空字符串值。在写入 DynamoDB 时,字符串集类型的属性值中支持空字符串属性值。 从写入请求中删除列表或映射类型中包含的字符串类型的空字符串属性值和空字符串值