

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

# 访问模式
<a name="access-patterns"></a>

如本指南前面所述，您可以从三种访问模式中进行选择，以便对 DynamoDB 表执行创建、读取、更新和删除 (CRUD) 操作：对象持久化接口、文档接口和低级 API 接口。以下各节描述了每个接口。对于我们的 SQL Server 到 DynamoDB 用例，我们选择了对象持久化接口，以实现简单性、可读性和便于维护。

## 对象持久化接口
<a name="object-persistence-interface"></a>

对象持久化接口提供了一种高级抽象访问机制，用于使用.NET 模型对 DynamoDB 项目执行 CRUD 操作，类似于实体框架实体。接口属性映射到 DynamoDB 项目属性。适用于.NET 的 AWS SDK 支持此模型中的自定义属性属性，用于自定义单个属性的序列化和反序列化、处理空值以及进行类型转换。

应用程序中使用的示例模型：

```
[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>

 AWS 适用于 DynamoDB 的软件开发工具包还提供低级 API 访问权限，以便使用`PutItem`、、和方法执行 CRUD 操作。`GetItem` `UpdateItem` `DeleteItem`该模型提供对属性映射和类型转换的完全控制。这些调用的响应是键值对的字典。

```
[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)。