

 AWS Mobile SDK for Xamarin が に含まれるようになりました AWS SDK for .NET。このガイドでは、Mobile SDK for Xamarin のアーカイブバージョンについて説明します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ドキュメントモデルの使用
<a name="dynamodb-integration-docmodel"></a>

ドキュメントモデルは、低レベル .NET API の周囲にラッパークラスを提供しています。テーブルとドキュメントが主要なラッパークラスです。ドキュメントモデルを使用して、項目を作成、検索、更新、および削除することができます。テーブルを作成、更新、および削除するには、低レベル API を使用する必要があります。低レベル API の使用方法については、「[DynamoDB サービスレベル API を使用する](dynamodb-integration-lowlevelapi.md)」を参照してください。低レベル API は、Amazon.DynamoDB.DocumentModel 名前空間で利用できます。

ドキュメントモデルの詳細については、「[.NET ドキュメントモデル](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DotNetSDKMidLevel.html)」を参照してください。

## DynamoDB クライアントの作成
<a name="create-a-dynamodb-client"></a>

DynamoDB クライアントを作成するには、以下を行います。

```
var client = new AmazonDynamoDBClient(credentials,region);
DynamoDBContext context = new DynamoDBContext(client);
```

## CRUD オペレーション
<a name="crud-operations"></a>

### 項目の保存
<a name="save-an-item"></a>

項目の作成:

```
Table table = Table.LoadTable(client, "Books");
id = Guid.NewGuid().ToString();
var books = new Document();
books["Id"] = id;
books["Author"] = "Mark Twain";
books["Title"] = "Adventures of Huckleberry Finn";
books["ISBN"] = "112-111111";
books["Price"] = "10";
```

項目を DynamoDB テーブルに保存:

```
var book = await table.PutItemAsync(books);
```

### 項目の取得
<a name="retrieve-an-item"></a>

項目を取得するには、以下を行います。

```
public async Task GetItemAsync(AWSCredentials credentials, RegionEndpoint region)
{
      var client = new AmazonDynamoDBClient(credentials, region);
      Table books = Table.LoadTable(client, "Books");
      var book = await books.GetItemAsync(id);
}
```

### 項目の更新
<a name="update-an-item"></a>

項目を更新するには:

```
public async Task UpdateItemAttributesAsync(AWSCredentials credentials, RegionEndpoint region)
{
      var book = new Document();
      book["Id"] = id;
      book["PageCount"] = "200";
      var client = new AmazonDynamoDBClient(credentials, region);
      Table books = Table.LoadTable(client, "Books");
      Document updatedBook = await books.UpdateItemAsync(book);
}
```

項目を条件付きで更新するには:

```
public async Task UpdateItemConditionallyAsync(AWSCredentials credentials, RegionEndpoint region) {
      var book = new Document();
      book["Id"] = id;
      book["Price"] = "30";

      // For conditional price update, creating a condition expression.
      Expression expr = new Expression();
      expr.ExpressionStatement = "Price = :val";
      expr.ExpressionAttributeValues[":val"] = 10.00;

      var client = new AmazonDynamoDBClient(credentials, region);
      Table books = Table.LoadTable(client, "Books");

      Document updatedBook = await books.UpdateItemAsync(book);
}
```

### 項目の削除
<a name="delete-an-item"></a>

項目を削除するには:

```
public async Task DeleteItemAsync(AWSCredentials credentials, RegionEndpoint region)
{
  var client = new AmazonDynamoDBClient(credentials, region);
  Table books = Table.LoadTable(client, "Books");
  await books.DeleteItemAsync(id);
}
```

### クエリおよびスキャン
<a name="query-and-scan"></a>

作成者が「Mark Twain」であるすべての書籍を検索して取得するには、以下を行います。

```
public async Task QueryAsync(AWSCredentials credentials, RegionEndpoint region) {
  var client = new AmazonDynamoDBClient(credentials, region);
  Table books = Table.LoadTable(client, "Books");
  var search = books.Query(new QueryOperationConfig() {
   IndexName = "Author-Title-index",
   Filter = new QueryFilter("Author", QueryOperator.Equal, "Mark Twain")
  });
  Console.WriteLine("ScanAsync: printing query response");
  var documents = await search.GetRemainingAsync();
  documents.ForEach((d) = > {
   PrintDocument(d);
  });
}
```

以下のスキャンのサンプルコードでは、テーブルに含まれるすべての本を返します。

```
public async Task ScanAsync(AWSCredentials credentials, RegionEndpoint region) {
      var client = new AmazonDynamoDBClient(credentials, region);
      Table books = Table.LoadTable(client, "Books");
      var search = books.Scan(new ScanOperationConfig() {
              ConsistentRead = true
      });
      Console.WriteLine("ScanAsync: printing scan response");
      var documents = await search.GetRemainingAsync();
      documents.ForEach((d) = > {
              PrintDocument(d);
      });
}
```