Compartilhar via


.NET Aspire integração da Microsoft Entity Framework CoreCosmos DB

Neste artigo, você aprenderá a usar a integração .NET Aspire Microsoft Entity Framework CoreCosmos DB. A biblioteca de Aspire.Microsoft.EntityFrameworkCore.Cosmos é usada para registrar um System.Data.Entity.DbContext como singleton no contêiner de DI para se conectar ao AzureAzure Cosmos DB. Ele também permite verificações de integridade correspondentes, registro em log e telemetria.

Começar

Para começar a usar a integração .NET Aspire Microsoft Entity Framework CoreCosmos DB, instale o pacote NuGet 📦Aspire.Microsoft.EntityFrameworkCore.Cosmos no projeto consumidor client, ou seja, o projeto do aplicativo que utiliza o Microsoft Entity Framework CoreCosmos DBclient.

dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos

Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em aplicativos .NET.

"Exemplo de uso"

No arquivo Program.cs do seu projeto de consumo de client, chame a extensão AddCosmosDbContext para registrar um System.Data.Entity.DbContext a ser usado por meio do contêiner de injeção de dependência.

builder.AddCosmosDbContext<MyDbContext>("cosmosdb");

Em seguida, você pode recuperar a instância de DbContext usando a injeção de dependência. Por exemplo, para recuperar o client de um serviço:

public class ExampleService(MyDbContext context)
{
    // Use context...
}

Para obter mais informações sobre como usar Entity Framework Core com Azure Cosmos DB, consulte os exemplos de para Azure Cosmos DB do SDK do NoSQL para .NET.

Uso do host do aplicativo

Para adicionar suporte de hospedagem AzureAzure Cosmos DB ao seu IDistributedApplicationBuilder, instale o pacote NuGet 📦Aspire.Hosting.Azure.CosmosDB no projeto de host do aplicativo .

dotnet add package Aspire.Hosting.Azure.CosmosDB

No projeto de host do aplicativo, registre a integração .NET Aspire Microsoft Entity Framework CoreCosmos DB e consuma o serviço usando os seguintes métodos:

var builder = DistributedApplication.CreateBuilder(args);

var cosmos = builder.AddAzureCosmosDB("cosmos");
var cosmosdb = cosmos.AddDatabase("cosmosdb");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(cosmosdb);

Dica

Para usar o emulador AzureAzure Cosmos DB, encadeia uma chamada ao método AddAzureCosmosDB.

cosmosdb.RunAsEmulator();

Configuração

A .NET Aspire integração da Microsoft Entity Framework CoreCosmos DB fornece várias opções para configurar a conexão Azure Cosmos DB com base nos requisitos e convenções do seu projeto.

Usar uma cadeia de conexão

Ao usar uma cadeia de conexão da seção de configuração ConnectionStrings, você pode fornecer o nome da cadeia de conexão ao chamar builder.AddCosmosDbContext:

builder.AddCosmosDbContext<MyDbContext>("CosmosConnection");

Em seguida, a cadeia de conexão será recuperada da seção de configuração do ConnectionStrings:

{
  "ConnectionStrings": {
    "CosmosConnection": "AccountEndpoint=https://{account_name}.documents.azure.com:443/;AccountKey={account_key};"
  }
}

Para obter mais informações, consulte a documentação ConnectionString.

Usar provedores de configuração

A integração .NET Aspire Microsoft Entity Framework CoreCosmos DB dá suporte a Microsoft.Extensions.Configuration. Ele carrega o EntityFrameworkCoreCosmosSettings de appsettings.json ou de outros arquivos de configuração usando a chave Aspire:Microsoft:EntityFrameworkCore:Cosmos. Exemplo appsettings.json que configura algumas das opções:

{
  "Aspire": {
    "Microsoft": {
      "EntityFrameworkCore": {
        "Cosmos": {
          "DisableTracing": true
        }
      }
    }
  }
}

Usar delegados em linha

Você também pode passar o delegado Action<EntityFrameworkCoreCosmosSettings> configureSettings para configurar algumas ou todas as opções EntityFrameworkCoreCosmosSettings diretamente, por exemplo, para desabilitar o rastreamento no código:

builder.AddCosmosDbContext<MyDbContext>(
    "cosmosdb",
    settings => settings.DisableTracing = true);

Verificações de saúde

Por padrão, as integrações .NET.NET Aspire habilitam verificações de integridade para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral de integrações.

A integração do .NET Aspire Microsoft Entity Framework CoreCosmos DB atualmente não implementa verificações de estado, embora isso possa mudar em versões futuras.

Observabilidade e telemetria

.NET .NET Aspire integrações configuram automaticamente configurações de Log, Rastreamento e Métricas, que às vezes são conhecidas como os pilares da observabilidade. Para obter mais informações sobre a observabilidade e a telemetria de integração, consulte .NET.NET Aspire visão geral das integrações. Dependendo do serviço de backup, algumas integrações só podem dar suporte a alguns desses recursos. Por exemplo, algumas integrações dão suporte a registro em log e rastreamento, mas não a métricas. Os recursos de telemetria também podem ser desabilitados usando as técnicas apresentadas na seção Configuration.

Registro

A integração .NET Aspire Microsoft Entity Framework CoreCosmos DB usa as seguintes categorias de log:

  • Azure-Operação Cosmos-Request-Diagnostics
  • Microsoft.EntityFrameworkCore.ChangeTracking
  • Microsoft.EntityFrameworkCore.Database.Command
  • Microsoft.EntityFrameworkCore.Infrastructure
  • Microsoft.EntityFrameworkCore.Query

Rastreamento

A integração .NET Aspire Microsoft Entity Framework CoreCosmos DB emitirá as seguintes atividades de rastreamento usando OpenTelemetry:

  • Azure. Cosmos.Operation
  • OpenTelemetry. Instrumentation.EntityFrameworkCore

Métricas

A integração .NET Aspire Microsoft Entity Framework CoreCosmos DB atualmente dá suporte às seguintes métricas:

  • Microsoft.EntityFrameworkCore"
    • ec_Microsoft_EntityFrameworkCore_active_db_contexts
    • ec_Microsoft_EntityFrameworkCore_total_queries
    • ec_Microsoft_EntityFrameworkCore_consultas_por_segundo
    • ec_Microsoft_EntityFrameworkCore_total_save_changes
    • ec_Microsoft_EntityFrameworkCore_save_changes_per_second
    • ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
    • ec_Microsoft_Entity_total_execution_strategy_operation_failures
    • ec_Microsoft_E_estratégia_de_execução_falhas_de_operações_por_segundo
    • ec_Microsoft_EntityFramew_falhas_totais_de_concorrência_otimista
    • ec_Microsoft_EntityF_optimistic_concurrency_failures_per_second

Consulte também