.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.
- .NET Interface de Linha de Comando
-
PackageReference
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 .
- .NET CLI
-
PackageReference
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