Partilhar via


.NET Aspire Integração com o Microsoft Entity Framework CoreCosmos DB

Neste artigo, aprende como usar a integração do Microsoft .NET AspireEntity Framework CoreCosmos DB. A biblioteca Aspire.Microsoft.EntityFrameworkCore.Cosmos é usada para registrar um System.Data.Entity.DbContext como um singleton no contêiner DI para conexão com AzureAzure Cosmos DB. Ele também permite verificações de saúde, registro e telemetria correspondentes.

Começar

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

dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos

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

Exemplo de utilização

No arquivo Program.cs do seu projeto consumidor de client, chame a extensão AddCosmosDbContext para registar um System.Data.Entity.DbContext para ser utilizado através do contêiner de injeção de dependência.

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

Em seguida, você pode recuperar a instância 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 mais informações sobre a utilização do Entity Framework Core com o Azure Cosmos DB, consulte os exemplos de para Azure Cosmos DB no SDK NoSQL para .NET.

Utilização do host da aplicação

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

dotnet add package Aspire.Hosting.Azure.CosmosDB

Em seu projeto de host de aplicativo, registre o .NET Aspire integração do 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 de AzureAzure Cosmos DB, encadeie uma chamada para o método AddAzureCosmosDB.

cosmosdb.RunAsEmulator();

Configuração

A integração .NET Aspire 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 de ConnectionStrings, você pode fornecer o nome da cadeia de conexão ao chamar builder.AddCosmosDbContext:

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

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

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

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

Usar provedores de configuração

A integração .NET Aspire Microsoft Entity Framework CoreCosmos DB suporta Microsoft.Extensions.Configuration. Carrega o EntityFrameworkCoreCosmosSettings de appsettings.json ou outros ficheiros de configuração usando a chave Aspire:Microsoft:EntityFrameworkCore:Cosmos. Exemplo de appsettings.json que configura algumas das opções:

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

Usar delegados em linha

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

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

Controlos sanitários

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 das integrações.

A .NET Aspire integração da Microsoft Entity Framework CoreCosmos DB atualmente não implementa verificações de integridade, embora isso possa mudar em lançamentos futuros.

Observabilidade e telemetria

.NET .NET Aspire integrações configuram automaticamente as configurações de logging, tracing e métricas, que às vezes são conhecidas como os pilares da observabilidade. Para obter mais informações sobre observabilidade e telemetria de integração, consulte Visão geral de integrações .NET.NET Aspire. Dependendo do serviço de suporte, algumas integrações podem suportar apenas alguns desses recursos. Por exemplo, algumas integrações suportam registro em log e rastreamento, mas não métricas. Os recursos de telemetria também podem ser desativados usando as técnicas apresentadas na configuração do na seção.

Registo

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

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

Rastreio

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

  • Azure. Cosmos.Operação
  • OpenTelemetry. Instrumentação.EntityFrameworkCore

Métricas

A integração .NET Aspire Microsoft Entity Framework CoreCosmos DB atualmente suporta as seguintes métricas:

  • Microsoft.EntityFrameworkCore"
    • ec_Microsoft_EntityFrameworkCore_active_db_contexts
    • ec_Microsoft_EntityFrameworkCore_consultas_totais
    • ec_Microsoft_EntityFrameworkCore_queries_per_second
    • 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_execution_strategy_operation_failures_per_second
    • ec_Microsoft_EntityFramew_total_falhas_de_concorrência_optimista
    • ec_Microsoft_EntityF_optimistic_concurrency_failures_per_second

Ver também