El AWS SDK para móviles de Xamarin ahora está incluido en AWS SDK for .NET. Esta guía hace referencia a la versión archivada del SDK para móviles para Xamarin.
Uso del modelo de documento
El modelo de documento proporciona clases de encapsulamiento para la API .NET de bajo nivel. Table y Document son las clases contenedoras principales. Puede utilizar el modelo de documento para crear, recuperar, actualizar y eliminar elementos. Para crear, actualizar y eliminar las tablas, debe utilizar la API de bajo nivel. Para obtener instrucciones sobre cómo utilizar la API de bajo nivel, consulte Uso de las API de nivel de servicio de DynamoDB. La API de bajo nivel está disponible en Amazon.DynamoDB.DocumentModel namespace.
Para obtener más información sobre el modelo de documento, consulte Modelo de documento de .NET.
Creación de un cliente de DynamoDB
Para crear un cliente de DynamoDB:
var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);
Operaciones de CRUD
Almacenamiento de un elemento
Crear un elemento:
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";
Guardar un elemento en una tabla de DynamoDB:
var book = await table.PutItemAsync(books);
Recuperación de un elemento
Para recuperar un elemento:
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); }
Actualización de un elemento
Para actualizar un elemento:
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); }
Para actualizar un elemento condicionalmente:
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); }
Eliminación de un elemento
Para eliminar un elemento:
public async Task DeleteItemAsync(AWSCredentials credentials, RegionEndpoint region) { var client = new AmazonDynamoDBClient(credentials, region); Table books = Table.LoadTable(client, "Books"); await books.DeleteItemAsync(id); }
Consulta y examen
Para consultar y recuperar todos los libros cuyo autor sea "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); }); }
El código de ejemplo de examen que se muestra a continuación devuelve todos los libros de la tabla:
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); }); }