integracja .NET Aspire Microsoft Entity Framework CoreCosmos DB
Z tego artykułu dowiesz się, jak korzystać z integracji .NET Aspire Microsoft Entity Framework CoreCosmos DB. Biblioteka Aspire.Microsoft.EntityFrameworkCore.Cosmos
służy do rejestrowania System.Data.Entity.DbContext jako singleton w kontenerze DI na potrzeby nawiązywania połączenia z AzureAzure Cosmos DB. Umożliwia również odpowiednie kontrole kondycji, rejestrowanie i dane telemetryczne.
Rozpocznij
Aby rozpocząć pracę z integracją .NET Aspire Microsoft Entity Framework CoreCosmos DB, zainstaluj 📦Aspire. Pakiet NuGet Microsoft.EntityFrameworkCore.Cosmos w projekcie korzystającym z client, tj. projektu aplikacji korzystającej z Entity Framework CoreCosmos DBclientMicrosoft.
dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos
Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w aplikacjach .NET.
Przykładowe użycie
W pliku Program.cs korzystającego z projektu clientwywołaj rozszerzenie AddCosmosDbContext, aby zarejestrować System.Data.Entity.DbContext do użycia za pośrednictwem kontenera wstrzykiwania zależności.
builder.AddCosmosDbContext<MyDbContext>("cosmosdb");
Następnie można pobrać wystąpienie DbContext za pomocą wstrzykiwania zależności. Aby na przykład pobrać client z usługi:
public class ExampleService(MyDbContext context)
{
// Use context...
}
Aby uzyskać więcej informacji na temat używania Entity Framework Core z Azure Cosmos DB, zobacz przykłady dla Azure Cosmos DB dla NoSQL SDK dla .NET.
Użycie hosta aplikacji
Aby dodać obsługę hostowania AzureAzure Cosmos DB do IDistributedApplicationBuilder, zainstaluj pakiet NuGet 📦Aspire.Hosting.Azure.CosmosDB w projekcie hosta aplikacji .
dotnet add package Aspire.Hosting.Azure.CosmosDB
W projekcie hosta aplikacji zarejestruj integrację .NET Aspire Microsoft Entity Framework CoreCosmos DB i wykorzystaj usługę przy użyciu następujących metod:
var builder = DistributedApplication.CreateBuilder(args);
var cosmos = builder.AddAzureCosmosDB("cosmos");
var cosmosdb = cosmos.AddDatabase("cosmosdb");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cosmosdb);
Napiwek
Aby użyć emulatora AzureAzure Cosmos DB, należy wykonać wywołanie metody AddAzureCosmosDB.
cosmosdb.RunAsEmulator();
Konfiguracja
Integracja .NET Aspire Microsoft Entity Framework CoreCosmos DB oferuje wiele opcji konfiguracji połączenia Azure Cosmos DB zgodnie z wymaganiami i konwencjami Twojego projektu.
Używanie parametrów połączenia
W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings
można podać nazwę parametrów połączenia podczas wywoływania builder.AddCosmosDbContext
:
builder.AddCosmosDbContext<MyDbContext>("CosmosConnection");
Następnie parametry połączenia zostaną pobrane z sekcji konfiguracji ConnectionStrings
:
{
"ConnectionStrings": {
"CosmosConnection": "AccountEndpoint=https://{account_name}.documents.azure.com:443/;AccountKey={account_key};"
}
}
Aby uzyskać więcej informacji, zobacz dokumentację ConnectionString.
Korzystanie z dostawców konfiguracji
Integracja .NET Aspire Microsoft Entity Framework CoreCosmos DB obsługuje Microsoft.Extensions.Configuration. Ładuje EntityFrameworkCoreCosmosSettings z appsettings.json lub innych plików konfiguracji przy użyciu klucza Aspire:Microsoft:EntityFrameworkCore:Cosmos
. Przykład appsettings.json, który konfiguruje niektóre opcje:
{
"Aspire": {
"Microsoft": {
"EntityFrameworkCore": {
"Cosmos": {
"DisableTracing": true
}
}
}
}
}
Używanie delegatów wbudowanych
Możesz również przekazać delegata Action<EntityFrameworkCoreCosmosSettings> configureSettings
, aby skonfigurować niektóre lub wszystkie opcje EntityFrameworkCoreCosmosSettings bezpośrednio, na przykład w celu wyłączenia śledzenia z poziomu kodu:
builder.AddCosmosDbContext<MyDbContext>(
"cosmosdb",
settings => settings.DisableTracing = true);
Kontrole kondycji
Domyślnie .NET.NET Aspire integracje włączają kontrolę zdrowia dla wszystkich usług. Aby uzyskać więcej informacji, zobacz omówienie integracji .NET.NET Aspire.
Integracja .NET Aspire Microsoft Entity Framework CoreCosmos DB obecnie nie implementuje sprawdzania stanu, ale to może się zmienić w przyszłych wersjach.
Obserwowanie i telemetria
.NET
.NET Aspire integracje automatycznie ustawiają konfiguracje rejestrowania, śledzenia i metryk, które są czasami nazywane filarami obserwowalności. Aby uzyskać więcej informacji na temat możliwości obserwacji integracji i telemetrii, zobacz omówienie integracji .NET.NET Aspire. W zależności od usługi pomocniczej niektóre integracje mogą obsługiwać tylko niektóre z tych funkcji. Na przykład niektóre integracje obsługują rejestrowanie i śledzenie, ale nie metryki. Funkcje telemetrii można również wyłączyć przy użyciu technik przedstawionych w sekcji konfiguracji
Wyrąb
Integracja .NET Aspire Microsoft Entity Framework CoreCosmos DB używa następujących kategorii logów:
- Azure-Operacja Kosmos-Request-Diagnostics
- Microsoft.EntityFrameworkCore.ChangeTracking
- Microsoft.EntityFrameworkCore.Database.Command
- Microsoft.EntityFrameworkCore.Infrastructure
- Microsoft.EntityFrameworkCore.Query
Śledzenie
Integracja .NET Aspire Microsoft Entity Framework CoreCosmos DB będzie emitować następujące czynności śledzące przy użyciu OpenTelemetry:
- Azure. Cosmos.Operation
- OpenTelemetry. Instrumentation.EntityFrameworkCore
Wskaźniki
Integracja .NET Aspire Microsoft Entity Framework CoreCosmos DB obecnie obsługuje następujące metryki:
- Microsoft.EntityFrameworkCore"
- ec_Microsoft_EntityFrameworkCore_active_db_contexts
- ec_Microsoft_EntityFrameworkCore_łączne_zapytania
- ec_Microsoft_EntityFrameworkCore_zapytania_na_sekundę
- ec_Microsoft_EntityFrameworkCore_total_save_changes
- ec_Microsoft_EntityFrameworkCore_zapisz_zmiany_na_sekundę
- ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
- ec_Microsoft_Entity_total_execution_strategy_operation_failures
- liczba_niepowodzeń_strategii_realizacji_operacji_na_sekundę
- ec_Microsoft_EntityFramew_łączne_niepowodzenia_optymistycznej_równoczesności
- ec_Microsoft_EntityF_błędy_rywalizacji_optymistycznej_na_sekundę