

El SDK AWS móvil para Xamarin ahora está incluido en. AWS SDK para .NET Esta guía hace referencia a la versión archivada del SDK para móviles para Xamarin.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso del modelo de persistencia de objetos
<a name="dynamodb-integration-objectpersistencemodel"></a>

AWS Mobile SDK para .NET y Xamarin proporciona un modelo de persistencia de objetos que le permite mapear las clases en el cliente a una tabla de DynamoDB. A continuación, cada instancia de objeto se mapea a un elemento de la tabla correspondiente. Para guardar los objetos del lado del cliente en una tabla, el modelo Object Persistence proporciona la DBContext clase Dynamo, un punto de entrada a DynamoDB. Esta categoría le ofrece una conexión a DynamoDB y le permite obtener acceso a tablas, realizar diversas operaciones CRUD y ejecutar consultas.

El modelo de persistencia de objetos no proporciona una API para crear, actualizar o eliminar tablas. Solo ofrece operaciones de datos. Para crear, actualizar y eliminar las tablas, debe utilizar la API de bajo nivel. Para obtener instrucciones sobre cómo usar la API de bajo nivel, consulte [Uso del nivel de servicio de DynamoDB](dynamodb-integration-lowlevelapi.md). APIs

## Descripción general de
<a name="overview"></a>

El modelo de persistencia de objetos proporciona un conjunto de atributos para asignar las clases del lado del cliente a las tablas y a los atributos de las tablas. properties/fields El modelo de persistencia de objetos admite el mapeo explícito y predeterminado entre las propiedades de clase y los atributos de tabla.
+  **Mapeo explícito**: para asignar una propiedad a una clave principal, debe utilizar los atributos del modelo Dynamo Key Object Persistence y Dynamo DBHash DBRange Key Object Persistence. Además, en el caso de los atributos clave no principales, si el nombre de una propiedad de su clase y el atributo de tabla correspondiente al que desea asignarlo no son iguales, debe definir la asignación añadiendo explícitamente el atributo Dynamo. DBProperty
+  **Mapeo predeterminado**: de forma predeterminada, el modelo de persistencia de objetos mapea las propiedades de clase a los atributos con el mismo nombre de la tabla.

No tiene que mapear cada propiedad de clase. Para identificar estas propiedades, añada el atributo DBIgnore Dynamo. Al guardar y recuperar una instancia de un objeto se podría omitir cualquier propiedad marcada con este atributo.

## Tipos de datos admitidos
<a name="supported-data-types"></a>

El modelo de persistencia de objetos admite un conjunto de tipos de datos, colecciones y tipos de datos arbitrarios de .NET primitivos. El modelo admite los siguientes tipos de datos primitivos.
+ bool
+  byte
+ char
+ DateTime
+ decimal, double, float
+ Int16, Int32, Int64
+ SByte
+ cadena
+ UInt16, UInt32, UInt64

El modelo de persistencia de objetos también admite los tipos de colecciones .NET con las limitaciones siguientes:
+ El tipo de colección debe implementar ICollection una interfaz.
+ El tipo de colección se debe componer de los tipos de primitivas admitidos. Por ejemplo, ICollection<string>, ICollection<bool>.
+ El tipo de colección debe proporcionar un constructor sin parámetros.

Para obtener más información sobre el modelo de persistencia de objetos, consulte [Modelo de persistencia de objetos de .NET](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DotNetSDKHighLevel.html).

## Creación de un cliente de DynamoDB
<a name="create-a-dynamodb-client"></a>

Para crear un cliente de DynamoDB:

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

## Operaciones de CRUD
<a name="crud-operations"></a>

### Guardar un objeto
<a name="save-an-object"></a>

Crear un objeto:

```
[DynamoDBTable("Books")]
public class Book {
  [DynamoDBHashKey] // Hash key.
  public string Id {
    get;
    set;
  }

  [DynamoDBGlobalSecondaryIndexHashKey]
  public string Author {
    get;
    set;
  }

  [DynamoDBGlobalSecondaryIndexRangeKey]
  public string Title {
    get;
    set;
  }
  public string ISBN {
    get;
    set;
  }
  public int Price {
    get;
    set;
  }
  public string PageCount {
    get;
    set;
  }
}

Book myBook = new Book
{
    Id = id,
    Author = "Charles Dickens",
    Title = "Oliver Twist",
    ISBN = "111-1111111001",
    Price = 10,
    PageCount = 300
};
```

Guardar un objeto en una tabla de DynamoDB:

```
context.Save(myBook);
```

### Recuperar un objeto
<a name="retrieve-an-object"></a>

Para recuperar un objeto:

```
Book retrievedBook = context.Load<Book>(1);
```

### Actualizar un objeto
<a name="update-an-object"></a>

Para actualizar un objeto:

```
Book retrievedBook = context.Load<Book>(1);
retrievedBook.ISBN = "111-1111111001";
context.Save(retrievedBook);
```

### Eliminar un objeto
<a name="delete-an-object"></a>

Para eliminar un objeto:

```
Book retrievedBook = context.Load<Book>(1);
context.Delete(retrievedBook);
```

## Consulta y examen
<a name="query-and-scan"></a>

Para consultar y recuperar todos los libros cuyo autor sea "Charles Dickens":

```
public async Task QueryAsync(AWSCredentials credentials, RegionEndpoint region) {
  var client = new AmazonDynamoDBClient(credentials, region);
  DynamoDBContext context = new DynamoDBContext(client);

  var search = context.FromQueryAsync < Book > (new Amazon.DynamoDBv2.DocumentModel.QueryOperationConfig() {
    IndexName = "Author-Title-index",
    Filter = new Amazon.DynamoDBv2.DocumentModel.QueryFilter("Author", Amazon.DynamoDBv2.DocumentModel.QueryOperator.Equal, "Charles Dickens")
  });

  Console.WriteLine("items retrieved");

  var searchResponse = await search.GetRemainingAsync();
  searchResponse.ForEach((s) = > {
    Console.WriteLine(s.ToString());
  });
}
```

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);
  DynamoDBContext context = new DynamoDBContext(client);

  var search = context.FromScanAsync < Book > (new Amazon.DynamoDBv2.DocumentModel.ScanOperationConfig() {
   ConsistentRead = true
  });

  Console.WriteLine("items retrieved");

  var searchResponse = await search.GetRemainingAsync();
  searchResponse.ForEach((s) = > {
   Console.WriteLine(s.ToString());
  });
}
```