Partilhar via


Guia de início rápido: usar o Azure Cosmos DB para tabela com o SDK do Azure para .NET

Neste início rápido, você implanta um aplicativo básico do Azure Cosmos DB for Table usando o SDK do Azure para .NET. O Azure Cosmos DB for Table é um armazenamento de dados sem esquema que permite que os aplicativos armazenem dados de tabela estruturada na nuvem. Você aprende a criar tabelas, linhas e executar tarefas básicas em seu recurso do Azure Cosmos DB usando o SDK do Azure para .NET.

Documentação de referência da API | Código-fonte da biblioteca | Pacote (NuGet) | CLI do desenvolvedor do Azure

Pré-requisitos

  • Azure Developer CLI
  • Área de trabalho do Docker
  • .NET 9.0

Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.

Inicializar o projeto

Use a CLI do Desenvolvedor do Azure (azd) para criar uma conta do Azure Cosmos DB for Table e implantar um aplicativo de exemplo em contêiner. O aplicativo de exemplo usa a biblioteca de cliente para gerenciar, criar, ler e consultar dados de exemplo.

  1. Abra um terminal em um diretório vazio.

  2. Se ainda não estás autenticado, autentica-te na CLI do Desenvolvedor do Azure usando azd auth login. Siga as etapas especificadas pela ferramenta para autenticar na CLI usando suas credenciais preferidas do Azure.

    azd auth login
    
  3. Use azd init para inicializar o projeto.

    azd init --template cosmos-db-table-dotnet-quickstart
    
  4. Durante a inicialização, configure um nome de ambiente exclusivo.

  5. Implantar a conta do Azure Cosmos DB usando azd up. Os modelos Bicep também implantam uma aplicação web de exemplo.

    azd up
    
  6. Durante o processo de provisionamento, selecione sua assinatura, o local desejado e o grupo de recursos de destino. Aguarde a conclusão do processo de provisionamento. O processo pode levar aproximadamente cinco minutos.

  7. Depois que o provisionamento dos recursos do Azure for concluído, uma URL para o aplicativo Web em execução será incluída na saída.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Use o URL no console para navegar até seu aplicativo Web no navegador. Observe a saída do aplicativo em execução.

Captura de tela do aplicativo Web em execução.

Instalar a biblioteca de cliente

A biblioteca do cliente está disponível através do NuGet, como o Azure.Data.Tables pacote.

  1. Abra um terminal e navegue até a /src/web pasta.

    cd ./src/web
    
  2. Se ainda não estiver instalado, instale o pacote usando Azure.Data.Tablesdotnet add package.

    dotnet add package Azure.Data.Tables
    
  3. Abra e revise o arquivo src/web/Microsoft.Samples.Cosmos.Table.Quickstart.Web.csproj para validar se a Azure.Data.Tables entrada existe.

Importar bibliotecas

Importe os namespaces Azure.Identity e Azure.Data.Tables no seu código do aplicativo.

using Azure.Identity;

using Azure.Data.Tables;

Modelo de objeto

Nome Descrição
TableServiceClient Essa classe é a classe de cliente principal e é usada para gerenciar metadados ou bancos de dados em toda a conta.
TableClient Esta classe representa o cliente numa tabela da conta.

Exemplos de código

O código de exemplo no modelo usa uma tabela chamada cosmicworks-products. A cosmicworks-products tabela contém detalhes como nome, categoria, quantidade, preço, um identificador exclusivo e um sinalizador de venda para cada produto. O contêiner usa um identificador exclusivo como a chave de linha e categoria como uma chave de partição.

Autenticar o cliente

Este exemplo cria uma nova instância da TableServiceClient classe.

DefaultAzureCredential credential = new();

TableServiceClient serviceClient = new(
    endpoint: new Uri("<azure-cosmos-db-table-account-endpoint>"),
    credential
);

Obter uma mesa

Este exemplo cria uma instância da TableClient classe usando o GetTableClient método da TableServiceClient classe.

TableClient client = serviceClient.GetTableClient(
    tableName: "<azure-cosmos-db-table-name>"
);

Criar uma entidade

A maneira mais fácil de criar uma nova entidade em uma tabela é criar uma classe que implementa a ITableEntity interface. Em seguida, você pode adicionar suas próprias propriedades à classe para preencher colunas de dados nessa linha da tabela.

public record Product : ITableEntity
{
    public required string RowKey { get; set; }

    public required string PartitionKey { get; set; }

    public required string Name { get; set; }

    public required int Quantity { get; set; }

    public required decimal Price { get; set; }

    public required bool Clearance { get; set; }

    public ETag ETag { get; set; } = ETag.All;

    public DateTimeOffset? Timestamp { get; set; }
};

Crie uma entidade na tabela usando a Product classe chamando TableClient.AddEntityAsync<T>.

Product entity = new()
{
    RowKey = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    PartitionKey = "gear-surf-surfboards",
    Name = "Surfboard",
    Quantity = 10,
    Price = 300.00m,
    Clearance = true
};

Response response = await client.UpsertEntityAsync<Product>(
    entity: entity,
    mode: TableUpdateMode.Replace
);

Obter uma entidade

Você pode recuperar uma entidade específica de uma tabela usando o TableClient.GetEntityAsync<T> método. Forneça os partitionKey parâmetros e rowKey como para identificar a linha correta para executar uma leitura rápida de ponto dessa entidade.

Response<Product> response = await client.GetEntityAsync<Product>(
    rowKey: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    partitionKey: "gear-surf-surfboards"
);

Consultar entidades

Depois de inserir uma entidade, você também pode executar uma consulta para obter todas as entidades que correspondem a um filtro específico usando o TableClient.Query<T> método. Este exemplo filtra produtos por categoria usando a sintaxe LINQ (Language Integrated Query), que é um benefício do uso de modelos tipados ITableEntity como a Product classe.

string category = "gear-surf-surfboards";

AsyncPageable<Product> results = client.QueryAsync<Product>(
    product => product.PartitionKey == category
);

Analise os resultados paginados da consulta percorrendo cada página de resultados usando um loop assíncrono.

List<Product> entities = new();
await foreach (Product product in results)
{
    entities.Add(product);
}

Limpar recursos

Quando você não precisar mais do aplicativo ou recursos de exemplo, remova a implantação correspondente e todos os recursos.

azd down