Freigeben über


.NET Aspire Microsoft Entity Framework CoreCosmos DB Integration

In diesem Artikel erfahren Sie, wie Sie die .NET Aspire Microsoft Entity Framework CoreCosmos DB-Integration verwenden. Die Aspire.Microsoft.EntityFrameworkCore.Cosmos-Bibliothek wird verwendet, um eine System.Data.Entity.DbContext als Singleton im DI-Container zu registrieren, damit eine Verbindung mit AzureAzure Cosmos DBhergestellt werden kann. Außerdem ermöglicht es entsprechende Gesundheitschecks, Protokollierung und Telemetrie.

Loslegen

Um mit der .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration zu beginnen, installieren Sie das 📦Aspire.Microsoft.EntityFrameworkCore.Cosmos NuGet-Paket im Projekt, das clientverwendet, also das Projekt der Anwendung, die Microsoft Entity Framework CoreCosmos DBclientverwendet.

dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos

Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Paketabhängigkeiten in .NET-Anwendungen.

Beispielanwendung

Rufen Sie in der Datei Program.cs Ihres client-verbrauchenden Projekts die AddCosmosDbContext-Erweiterung auf, um eine System.Data.Entity.DbContext für den Einsatz über den Container zum Einfügen von Abhängigkeiten zu registrieren.

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

Anschließend können Sie die DbContext Instanz mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie beispielsweise die client von einem Dienst ab:

public class ExampleService(MyDbContext context)
{
    // Use context...
}

Weitere Informationen zur Verwendung von Entity Framework Core mit Azure Cosmos DBfinden Sie in den Beispielen für Azure Cosmos DB des NoSQL SDK für .NET.

Apphost-Verwendung

Um AzureAzure Cosmos DB Hostingunterstützung zu Ihrer IDistributedApplicationBuilderhinzuzufügen, installieren Sie das 📦Aspire.Hosting.Azure.CosmosDB NuGet-Paket im App-Host Projekt.

dotnet add package Aspire.Hosting.Azure.CosmosDB

Registrieren Sie in Ihrem App-Hostprojekt die .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration, und nutzen Sie den Dienst mithilfe der folgenden Methoden:

var builder = DistributedApplication.CreateBuilder(args);

var cosmos = builder.AddAzureCosmosDB("cosmos");
var cosmosdb = cosmos.AddDatabase("cosmosdb");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(cosmosdb);

Trinkgeld

Um den AzureAzure Cosmos DB Emulator zu verwenden, verketten Sie einen Aufruf der AddAzureCosmosDB-Methode.

cosmosdb.RunAsEmulator();

Konfiguration

Die .NET Aspire Microsoft-Entity Framework Core-Cosmos DB-Integration bietet mehrere Optionen zum Konfigurieren der Azure Cosmos DB Verbindung, die an die Anforderungen und Konventionen Ihres Projekts angepasst sind.

Verwenden Sie eine Verbindungszeichenfolge

Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings verwenden, können Sie beim Aufrufen von builder.AddCosmosDbContextden Namen der Verbindungszeichenfolge angeben:

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

Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings abgerufen:

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

Weitere Informationen finden Sie in der ConnectionString-Dokumentation.

Verwenden von Konfigurationsanbietern

Die .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration unterstützt Microsoft.Extensions.Configuration. Es lädt die EntityFrameworkCoreCosmosSettings aus appsettings.json oder anderen Konfigurationsdateien mithilfe des Aspire:Microsoft:EntityFrameworkCore:Cosmos-Schlüssels. Beispiel appsettings.json, das einige der Optionen konfiguriert:

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

Verwenden von Inlinedelegaten

Sie können auch den Action<EntityFrameworkCoreCosmosSettings> configureSettings Delegat übergeben, um einige oder alle EntityFrameworkCoreCosmosSettings Optionen inline einzurichten, z. B. um die Ablaufverfolgung aus Code zu deaktivieren:

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

Gesundheitschecks

Standardmäßig aktivieren .NET.NET Aspire-Integrationen Gesundheitsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.

Die .NET Aspire Microsoft Entity Framework CoreCosmos DB-Integration führt derzeit keine Gesundheitsprüfungen durch, obwohl sich dies in zukünftigen Versionen ändern könnte.

Observability und Telemetrie

.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Tracing- und Metrikkonfigurationen ein, die manchmal als die Säulen der Observabilitybezeichnet werden. Weitere Informationen zur Integrationsobservability und Telemetrie finden Sie unter .NET.NET Aspire Übersicht über Integrationen. Abhängig vom Unterstützungsdienst könnten einige Integrationen nur bestimmte dieser Funktionen unterstützen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Configuration beschrieben werden.

Protokollierung

Die .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration verwendet die folgenden Protokollkategorien:

  • Azure-Cosmos-Operation-Request-Diagnostics
  • Microsoft.EntityFrameworkCore.ChangeTracking
  • Microsoft.EntityFrameworkCore.Database.Command
  • Microsoft.EntityFrameworkCore.Infrastructure
  • Microsoft.EntityFrameworkCore.Query

Nachverfolgung

Die .NET Aspire Microsoft Entity Framework CoreCosmos DB-Integration gibt mithilfe von OpenTelemetrydie folgenden Protokollierungsaktivitäten aus:

  • Azure. Cosmos.Operation
  • OpenTelemetry. Instrumentation.EntityFrameworkCore

Metriken

Die .NET Aspire Microsoft Entity Framework CoreCosmos DB -Integration unterstützt derzeit die folgenden Metriken:

  • Microsoft.EntityFrameworkCore"
    • ec_Microsoft_EntityFrameworkCore_active_db_contexts
    • ec_Microsoft_EntityFrameworkCore_gesamt_abfragen
    • 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_Gesamtanzahl_Ausführungsstrategie_Betriebsfehler
    • ec_Microsoft_E_Ausführungsstrategie_Vorgangsfehler_pro_Sekunde
    • ec_Microsoft_EntityFramework_gesamt_optimistische_Konkurrenzfehler
    • ec_Microsoft_EntityF_optimistische_Konkurrenzfehler_pro_Sekunde

Siehe auch