integrazione di .NET Aspire Microsoft Entity Framework CoreCosmos DB
In questo articolo imparerai come utilizzare l'integrazione Microsoft .NET AspireEntity Framework CoreCosmos DB. La libreria Aspire.Microsoft.EntityFrameworkCore.Cosmos
viene usata per registrare un System.Data.Entity.DbContext come singleton nel contenitore DI per connettersi a AzureAzure Cosmos DB. Abilita anche i controlli di integrità, i log e la telemetria corrispondente.
Inizia
Per iniziare a usare l'integrazione di Microsoft Entity Framework CoreCosmos DB.NET Aspire, installare il pacchetto NuGet 📦Aspire.Microsoft.EntityFrameworkCore.Cosmos nel progetto che utilizza client, ossia il progetto dell'applicazione che utilizza Microsoft Entity Framework CoreCosmos DBclient.
- .NET (dell'interfaccia della riga di comando)
- PackageReference
dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos
Per ulteriori informazioni, vedere dotnet add package o Gestire le dipendenze dei pacchetti nelle applicazioni .NET.
Esempio di utilizzo
Nel file Program.cs del progetto client-consume chiamare l'estensione AddCosmosDbContext per registrare un System.Data.Entity.DbContext da usare tramite il contenitore di inserimento delle dipendenze.
builder.AddCosmosDbContext<MyDbContext>("cosmosdb");
È quindi possibile recuperare l'istanza di DbContext usando l'iniezione delle dipendenze. Ad esempio, per recuperare il client da un servizio:
public class ExampleService(MyDbContext context)
{
// Use context...
}
Per ulteriori informazioni sull'uso di Entity Framework Core con Azure Cosmos DB, vedere gli esempi di per Azure Cosmos DB nel SDK NoSQL per .NET.
Utilizzo dell'host dell'app
Per aggiungere supporto hosting AzureAzure Cosmos DB al IDistributedApplicationBuilder, installare il pacchetto NuGet 📦Aspire.Hosting.Azure.CosmosDB nel progetto host dell'app .
- .NET CLI (interfaccia della riga di comando)
- RiferimentoPacchetto
dotnet add package Aspire.Hosting.Azure.CosmosDB
Nel progetto host dell'app, registra l'integrazione .NET Aspire Microsoft Entity Framework CoreCosmos DB e utilizza il servizio con i seguenti metodi:
var builder = DistributedApplication.CreateBuilder(args);
var cosmos = builder.AddAzureCosmosDB("cosmos");
var cosmosdb = cosmos.AddDatabase("cosmosdb");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cosmosdb);
Mancia
Per usare l'emulatore AzureAzure Cosmos DB, concatenare una chiamata al metodo AddAzureCosmosDB.
cosmosdb.RunAsEmulator();
Configurazione
L'integrazione .NET Aspire di Microsoft Entity Framework CoreCosmos DB offre più opzioni per configurare la connessione Azure Cosmos DB in base ai requisiti e alle convenzioni del progetto.
Usare una stringa di connessione
Quando si usa una stringa di connessione dalla sezione di configurazione ConnectionStrings
, è possibile specificare il nome della stringa di connessione quando si chiama builder.AddCosmosDbContext
:
builder.AddCosmosDbContext<MyDbContext>("CosmosConnection");
La stringa di connessione verrà quindi recuperata dalla sezione di configurazione ConnectionStrings
:
{
"ConnectionStrings": {
"CosmosConnection": "AccountEndpoint=https://{account_name}.documents.azure.com:443/;AccountKey={account_key};"
}
}
Per ulteriori informazioni, consultare la documentazione ConnectionString.
Usare i fornitori di configurazione
L'integrazione di Microsoft Entity Framework CoreCosmos DB.NET Aspire supporta Microsoft.Extensions.Configuration. Carica il EntityFrameworkCoreCosmosSettings da appsettings.json o da altri file di configurazione usando la chiave Aspire:Microsoft:EntityFrameworkCore:Cosmos
. Esempio appsettings.json che configura alcune delle opzioni:
{
"Aspire": {
"Microsoft": {
"EntityFrameworkCore": {
"Cosmos": {
"DisableTracing": true
}
}
}
}
}
Usare delegati inline
È anche possibile passare il delegato Action<EntityFrameworkCoreCosmosSettings> configureSettings
per configurare alcune o tutte le opzioni EntityFrameworkCoreCosmosSettings direttamente in linea, ad esempio per disabilitare il monitoraggio dal codice:
builder.AddCosmosDbContext<MyDbContext>(
"cosmosdb",
settings => settings.DisableTracing = true);
Controlli sanitari
Per impostazione predefinita, le integrazioni di .NET.NET Aspire abilitano verifiche dello stato di salute per tutti i servizi. Per altre informazioni, vedere panoramica delle integrazioni .NET.NET Aspire.
L'integrazione .NET Aspire Microsoft Entity Framework CoreCosmos DB attualmente non implementa i controlli della salute, anche se questo potrebbe variare nelle versioni future.
Osservabilità e telemetria
.NET
.NET Aspire le integrazioni configurano automaticamente le impostazioni di registrazione, tracciamento e metriche, talvolta note come i pilastri dell'osservabilità. Per altre informazioni sull'osservabilità e la telemetria dell'integrazione, vedere panoramica delle integrazioni .NET.NET Aspire. A seconda del servizio di backup, alcune integrazioni possono supportare solo alcune di queste funzionalità. Ad esempio, alcune integrazioni supportano la registrazione e la traccia, ma non le metriche. Le funzionalità di telemetria possono essere disabilitate anche usando le tecniche presentate nella sezione Configurazione
Registrazione
L'integrazione di .NET Aspire Microsoft Entity Framework CoreCosmos DB usa le categorie di log seguenti:
- Azure-Cosmos-Operation-Request-Diagnostics
- Microsoft.EntityFrameworkCore.ChangeTracking
- Microsoft.EntityFrameworkCore.Database.Command
- Microsoft.EntityFrameworkCore.Infrastructure
- Microsoft.EntityFrameworkCore.Query
Tracciamento
L'integrazione di Microsoft Entity Framework CoreCosmos DB.NET Aspire genererà le attività di traccia seguenti usando OpenTelemetry:
- Azure. Cosmos.Operation
- OpenTelemetry. Instrumentation.EntityFrameworkCore
Metriche
L'integrazione .NET Aspire Microsoft Entity Framework CoreCosmos DB supporta attualmente le metriche seguenti:
- Microsoft.EntityFrameworkCore"
- ec_Microsoft_EntityFrameworkCore_active_db_contexts
- ec_Microsoft_EntityFrameworkCore_total_queries
- 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_totale_strategia_di_esecuzione_operazioni_errori
- ec_Microsoft_E_strategia_di_esecuzione_errori_operazione_al_secondo
- ec_Microsoft_EntityFramew_total_fallimenti_concorrenza_ottimistica
- ec_Microsoft_EntityF_fallimenti_di_concorrenza_ottimistica_al_secondo