

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

# 存取模式
<a name="access-patterns"></a>

如本指南先前所述，您可以從三種存取模式中選擇，以在 DynamoDB 資料表上執行建立、讀取、更新和刪除 (CRUD) 操作：物件持久性界面、文件界面和低階 API 界面。以下各節說明每個界面。針對 SQL Server 到 DynamoDB 使用案例，我們選擇物件持久性界面，以簡化、可讀性及易於維護。

## 物件持久性界面
<a name="object-persistence-interface"></a>

物件持久性界面提供高階的抽象存取機制，可透過使用類似於實體架構實體的 .NET 模型，在 DynamoDB 項目上執行 CRUD 操作。介面屬性會對應至 DynamoDB 項目屬性。適用於 .NET 的 AWS SDK 支援此模型中的自訂屬性屬性，以自訂個別屬性的序列化和還原序列化、處理 null 值，以及類型轉換。

應用程式中使用的範例模型：

```
[DynamoDBTable(“AppLibrary")]
public class ProdApp
{
      [DynamoDBHashKey]
      public string PK { get; set; }     //Partition key
 
      [DynamoDBRangeKey]
      public string SK { get; set; }     //Sort key  
 
      [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")]
      [DynamoDBProperty]
      public int Version { get; set; }    
       . . .
      [DynamoDBProperty]
      public Int64 TTL { get; set; }
}
```

項目存取：

```
var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials);
var _context = new DynamoDBContext(_dynamoDbClient);
 
public ProdApp GetProdAppById (Guid id, int version)
{
     var pk = $”{id}-{version}”;
     return _context.Load<ProdApp>(pk, ItemType.ProductionApplication);
}
```

如需詳細資訊，請參閱 DynamoDB 文件中的[物件持久性界面](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.SDKs.Interfaces.Mapper.html)。

## 文件界面
<a name="document-interface"></a>

文件界面模型提供 DynamoDB 項目的文件型存取 （類似 .NET `XMLDocument`中的 )。此模型提供更高階的程式設計界面，但將其呼叫轉譯為低階 APIs，以執行操作。

```
var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials);
var _table = Table.LoadTable(_dynamoDbClient, “AppLibrary”);
 
public ProdApp GetProdAppById (Guid id, int version)
{
      var pk = $”{id}-{version}”;
     var doc = _table.GetItem(pk, ItemType.ProductionApplication);
      var app = new ProdApp {
          PK = doc[“PK”],
          SK = doc[“SK”],
          Version = doc[“Version”],
          . . .
      };
      return app;
 }
```

如需詳細資訊，請參閱 DynamoDB 文件中的文件[介面](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.SDKs.Interfaces.Document.html)。

## 低階 API
<a name="low-level-api"></a>

適用於 DynamoDB 的 AWS SDK 也提供低階 API 存取，以使用 `PutItem`、`GetItem`、 `UpdateItem`和 `DeleteItem`方法來執行 CRUD 操作。此模型可完全控制屬性映射和類型轉換。這些呼叫的回應是索引鍵/值對的字典。

```
[DynamoDBTable(“AppLibrary")]
public class ProdApp
{
        [DynamoDBHashKey]
        public string PK { get; set; }     //Partition key
 
        [DynamoDBRangeKey]
         public string SK { get; set; }     //Sort key  
 
        [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")]
        [DynamoDBProperty]
        public int Version { get; set; }     
              . . . 
        [DynamoDBProperty]
        public ProdConfig Config  { get; set; }
}
 
var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials);
                                           
public ProdApp GetProdAppById (Guid id, int version)
{
    var pk = $”{id}-{version}”;
    var resp = _dynamoDbClient.Query(queryRequest);
    var item = resp.Items[0]; 
    var app = new ProdApp {
         PK = item[“PK”].S,
         SK = item[“SK”].S,
         Version = Convert.ToInt32(item[“Version”].S),
         . . .       
         Config = new ProdConfig {
               Name = item[“Config”].M[“Name”].S,
               Id = Conver.ToInt32(item[“Config”].M[“Id”].S)
         }
    };    
    return app;
 }
```

如需詳細資訊，請參閱 DynamoDB 文件中的[低階介面](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.SDKs.Interfaces.LowLevel.html)。