.NET 对象持久化模型中的 DynamoDB 属性
本节介绍了对象持久化模型提供的属性,以便您可以将类和属性映射到 DynamoDB 表和属性。
注意
在以下属性中,仅 DynamoDBTable
和 DynamoDBHashKey
是必需的。
DynamoDBGlobalSecondaryIndexHashKey
将类属性映射到全局二级属性的分区键。如果您需要 Query
到全局二级索引,请使用此属性。
DynamoDBGlobalSecondaryIndexRangeKey
将类属性映射到全局二级索引的排序键。如果您需要对全局二级索引执行 Query
操作,并想使用索引排序键细化结果,请使用此属性。
DynamoDBHashKey
将类属性映射到表主键的分区键。主键属性不能是集合类型。
下面的 C# 代码示例将 Book
类映射到 ProductCatalog
表,将 Id
属性映射到表的主键分区键。
[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } // Additional properties go here. }
DynamoDBIgnore
指示应忽略关联属性。如果您不想保存任何类属性,可以添加此属性来指示 DynamoDBContext
将对象保存到表格时不包含此属性。
DynamoDBLocalSecondaryIndexRangeKey
将类属性映射到本地二级索引的排序键。如果您需要对本地二级索引执行 Query
操作,并想使用索引排序键细化结果,请使用此属性。
DynamoDBProperty
将属性映射到表属性。如果类属性映射到同名表属性,则无需指定此属性。但是,如果名称不同,您可以使用此标记提供映射。在以下 C# 代码段中,DynamoDBProperty
将 BookAuthors
属性映射到表中的 Authors
属性。
[DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; }
将对象数据保存到相应的表,DynamoDBContext
使用此映射信息创建 Authors
属性。
DynamoDBRenamable
指定类属性的替代名称。如果您正在编写自定义转换器,用于将任意数据映射到类属性的名称与表属性不同的 DynamoDB 表,则此选项非常有用。
DynamoDBRangeKey
将类属性映射到表主键的排序键。如果表具有复合主键(分区键和排序键),您必须同时指定类映射的 DynamoDBHashKey
和 DynamoDBRangeKey
属性。
例如,示例表 Reply
有一个由 Id
分区键和 Replenishment
排序键构成的主键。下面的 C# 代码示例将 Reply
类映射到 Reply
表。类定义还指示其两个属性映射到主键。
[DynamoDBTable("Reply")] public class Reply { [DynamoDBHashKey] public int ThreadId { get; set; } [DynamoDBRangeKey] public string Replenishment { get; set; } // Additional properties go here. }
DynamoDBTable
确定类映射到的 DynamoDB 中的目标表。例如,以下 C# 代码示例将 Developer
类映射到 DynamoDB 的 People
表。
[DynamoDBTable("People")] public class Developer { ...}
此属性可以被继承或覆盖。
-
DynamoDBTable
属性可被继承。在上述示例中,如果添加继承自Developer
类的新类Lead
,则还映射到People
表。Developer
和Lead
对象存储在People
表。 -
DynamoDBTable
属性也可以被覆盖。在下面的 C# 代码示例中,Manager
类继承自Developer
类。但是,明确添加DynamoDBTable
属性将类映射到另一个表 (Managers
)。[DynamoDBTable("Managers")] public class Manager : Developer { ...}
您可以添加可选参数 LowerCamelCaseProperties
,在将对象存储到表时请求 DynamoDB 将属性名称的第一个字母设置为小写,如下面的 C# 示例所示。
[DynamoDBTable("People", LowerCamelCaseProperties=true)] public class Developer { string DeveloperName; ... }
保存 Developer
类实例时,DynamoDBContext
保存 DeveloperName
属性作为 developerName
。
DynamoDBVersion
标识用于存储项目版本号的类属性。有关版本控制的更多信息,请参阅将 DynamoDB 和 Amazon SDK for .NET 对象持久化模型结合使用的乐观锁。