AWS Mobile SDK for Xamarin은 이제 AWS SDK for .NET에 포함됩니다. 이 안내서에서는 Xamarin용 모바일 SDK의 아카이브된 버전을 참조합니다.
문서 모델 사용
문서 모델은 하위 수준 .NET API를 둘러싼 래퍼 클래스를 제공합니다. 테이블과 문서가 주요 래퍼 클래스입니다. 문서 모델을 사용하여 항목을 생성, 검색, 업데이트 및 삭제할 수 있습니다. 테이블을 생성, 업데이트 및 삭제하려면 하위 수준 API를 사용해야 합니다. 하위 수준 API를 사용하는 방법에 대한 자세한 내용은 DynamoDB 서비스 수준 API 사용을 참조하세요. 이 하위 수준 API는 Amazon.DynamoDB.DocumentModel 네임스페이스에서 사용할 수 있습니다.
문서 모델에 대한 자세한 내용은 .NET 문서 모델을 참조하세요.
DynamoDB 클라이언트 생성
DynamoDB 클라이언트를 생성하는 방법:
var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);
CRUD 연산
항목 저장
항목을 생성합니다.
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);
항목 검색
항목을 검색하는 방법:
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); }
항목 업데이트
항목 업데이트 방법:
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); }
항목 삭제
항목 삭제 방법:
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
저자가 "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); }); }