Udostępnij za pośrednictwem


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ę

Zobacz też