

이제 Xamarin용 AWS Mobile SDK가에 포함됩니다 AWS SDK for .NET. 이 안내서에서는 Xamarin용 모바일 SDK의 아카이브된 버전을 참조합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 문서 모델 사용
<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);
}
```

### Query and Scan
<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);
      });
}
```