使用 .NET 物件持久性模型和 DynamoDB - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 .NET 物件持久性模型和 DynamoDB

AWS SDK for .NET 提供物件持久性模型,可讓您將用戶端類別映射至 Amazon DynamoDB 資料表。然後每個物件執行個體會映射至相對應資料表中的某個項目。為了將用戶端物件儲存至資料表,物件持久性模型會提供 DynamoDBContext 類別 (即 DynamoDB 的進入點)。此類別提供您 DynamoDB 的連線,並可讓您存取資料表、執行各種CRUD操作,以及執行查詢。

物件持久性模型提供了一組屬性,可將用戶端類別映射到資料表,並將屬性/欄位映射至資料表屬性。

注意

物件持久性模型不提供 API來建立、更新或刪除資料表。它只提供資料操作。您只能使用 AWS SDK for .NET 低階 API 來建立、更新和刪除資料表。

以下範例會示範物件持久性模型的運作方式。它會從 ProductCatalog 資料表開始作業。它將 Id 作為主索引鍵。

ProductCatalog(Id, ...)

假設您的 Book 類別具有 TitleISBN 以及 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 屬性則會映射至 ProductCatalog 資料表中的 Authors 屬性。

  • 預設映射:依預設,物件持久性模型會將類別屬性映射至資料表中具有相同名稱的屬性。

    在上述範例中,屬性 TitleISBN 會映射至 ProductCatalog 資料表中具有相同名稱的屬性。

您不必映射每個類別屬性。您可以新增 DynamoDBIgnore 屬性來識別這些屬性。當您將 Book 執行個體儲存至資料表時,DynamoDBContext 不會包含 CoverPage 屬性。在擷取書籍執行個體時,它也不會傳回此屬性。

您可以映射 的屬性。NET基本類型,例如 int 和 string。只要提供適當的轉換器將任意資料映射至其中一種 DynamoDB 類型,您也可以映射任意資料類型。若要進一步了解如何映射任意類型,請參閱 使用 AWS SDK for .NET 物件持久性模型使用 DynamoDB 映射任意資料

物件持久性模型支援樂觀鎖定。在更新操作期間,這可確保您擁有即將更新項目的最新副本。如需詳細資訊,請參閱使用 DynamoDB 和 AWS SDK for .NET 物件持久性模型的樂觀鎖定

如需詳細資訊,請參閱下列主題。

支援的資料類型

物件持久性模型支援一組基本的 。NET 資料類型、集合和任意資料類型。模型目前支援下列基本資料類型。

  • bool

  • byte

  • char

  • DateTime

  • decimal

  • double

  • float

  • Int16

  • Int32

  • Int64

  • SByte

  • string

  • UInt16

  • UInt32

  • UInt64

物件持久性模型也支援 .NET 集合類型。 DynamoDBContext 能夠轉換具體集合類型和簡單的純舊CLR物件 (POCOs)。

下表摘要說明將上述 .NET 類型映射至 DynamoDB 類型。

.NET 基本類型 DynamoDB 類型

所有數字類型

N (數字類型)

所有字串類型

S (字串類型)

MemoryStream,位元組 【】

B (二進位類型)

bool N (數字類型)。0 代表 false,1 代表 true。
集合類型 BS (二進位集) 類型、SS (字串集) 類型和 NS (數字集) 類型。
DateTime S (字串類型)。這些DateTime值會儲存為 ISO-8601 格式的字串。

物件持久性模型也支援任意資料類型。不過,您必須提供轉換器程式碼,才能將複雜類型映射至 DynamoDB 類型。

注意
  • 支援空白的二進位值。

  • 支援讀取空白字串值。寫入 DynamoDB 時,字串 Set 類型的屬性值會支援空白字串的屬性值。List 或 Map 類型中包含的字串類型的空白字串屬性值和空白字串值會從寫入請求中捨棄