Freigeben über


.NET Aspire PostgreSQL Entity Framework Core Einbindung

Enthält:Hosting-Integration inbegriffen Hosting-Integration —&— Client Integration inbegriffenClient Integration

PostgreSQL ist ein leistungsfähiges, Open-Source-objektrelationales Datenbanksystem mit langjähriger aktiver Entwicklung, die ihm einen starken Ruf für Zuverlässigkeit, umfangreiche Funktionen und Leistung eingebracht hat. Die .NET AspirePostgreSQLEntity Framework Core-Integration bietet eine Möglichkeit, eine Verbindung mit vorhandenen PostgreSQL-Datenbanken herzustellen oder neue Instanzen aus .NET mit dem docker.io/library/postgres Containerimagezu erstellen.

Integration von Hosting

Die PostgreSQL-Hosting-Integrationsmodelle stellen verschiedene PostgreSQL-Ressourcen in den folgenden Typen dar.

Um auf diese Typen und APIs zuzugreifen und sie als Ressourcen in Ihrem App-Host--Projekt auszudrücken, installieren Sie das 📦Aspire.Hosting.PostgreSQL NuGet-Paket.

dotnet add package Aspire.Hosting.PostgreSQL

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

Füge PostgreSQL zur Serverressource hinzu

Rufen Sie in Ihrem App-Hostprojekt AddPostgres für die builder Instanz auf, um eine PostgreSQL Serverressource hinzuzufügen, und rufen Sie dann AddDatabase in der postgres Instanz auf, um eine Datenbankressource hinzuzufügen, wie im folgenden Beispiel gezeigt:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres");
var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Wenn .NET.NET Aspire dem App-Host ein Containerimage hinzufügt, wie im vorherigen Beispiel mit dem docker.io/library/postgres-Image gezeigt, wird eine neue PostgreSQL Serverinstanz auf dem lokalen Computer erstellt. Ein Verweis auf Ihre PostgreSQL Server- und Datenbankinstanz (die postgresdb Variable) werden verwendet, um eine Abhängigkeit zu der ExampleProject hinzuzufügen.

Wenn Sie dem App-Modell eine Datenbankressource hinzufügen, wird die Datenbank erstellt, sofern sie noch nicht vorhanden ist. Die Erstellung der Datenbank basiert insbesondere auf den App-Hostereignis-APIs.ResourceReadyEvent Anders ausgedrückt: Wenn die postgres Ressource bereit ist, wird das Ereignis ausgelöst, und die Datenbankressource wird erstellt.

Die PostgreSQL-Serverressource enthält Standardanmeldeinformationen mit einem username-Wert von "postgres" und zufällig generierten password mithilfe der CreateDefaultPasswordParameter-Methode.

Die WithReference-Methode konfiguriert eine Verbindung im ExampleProject namens "messaging". Weitere Informationen finden Sie unter Container-Ressourcen-Lebenszyklus.

Tipp

Wenn Sie lieber eine Verbindung mit einem vorhandenen PostgreSQL Server herstellen möchten, rufen Sie stattdessen AddConnectionString auf. Weitere Informationen finden Sie unter Referenzieren vorhandener Ressourcen.

Hinzufügen einer PostgreSQL Ressource mit Datenbankskripts

Wenn Sie ein Objekt PostgresDatabaseResourcehinzufügen, basiert es standardmäßig auf dem folgenden Skript, um die Datenbank zu erstellen:

CREATE DATABASE "<QUOTED_DATABASE_NAME>"

Um das Standardskript zu ändern, verketten Sie einen Aufruf der WithCreationScript Methode im Datenbankressourcen-Generator:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres");

var databaseName = "app_db";
var creationScript = $$"""
    -- Create the database
    CREATE DATABASE {{databaseName}};

    """;

var db = postgres.AddDatabase(databaseName)
                 .WithCreationScript(creationScript);

builder.AddProject<Projects.ExampleProject>()
       .WithReference(db)
       .WaitFor(db);

// After adding all resources, run the app...

Im vorherigen Beispiel wird eine Datenbank mit dem Namen app_dberstellt. Das Skript wird ausgeführt, wenn die Datenbankressource erstellt wird. Das Skript wird als Zeichenfolge an die WithCreationScript Methode übergeben, die dann im Kontext der PostgreSQL Ressource ausgeführt wird.

Anmerkung

Die Verbindung mit einem Datenbankbefehl (\c) wird bei Verwendung des Erstellungsskripts nicht unterstützt.

Fügen Sie PostgreSQL pgAdmin-Ressource hinzu

Beim Hinzufügen von PostgreSQL Ressourcen zum builder mit der AddPostgres-Methode können Sie Aufrufe an WithPgAdmin verketten, um den dpage/pgadmin4 Container hinzuzufügen. Dieser Container ist ein plattformunabhängiger Client für PostgreSQL Datenbanken, der ein webbasiertes Administrator-Dashboard bereitstellt. Betrachten Sie das folgende Beispiel:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres")
                      .WithPgAdmin();

var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Der vorangehende Code fügt einen Container basierend auf dem docker.io/dpage/pgadmin4 Image hinzu. Der Container wird verwendet, um die PostgreSQL Server- und Datenbankressourcen zu verwalten. Die WithPgAdmin-Methode fügt einen Container hinzu, der einem webbasierten Administratordashboard für PostgreSQL Datenbanken dient.

Konfigurieren des pgAdmin-Hostports

Rufen Sie zum Konfigurieren des Hostports für den pgAdmin-Container die WithHostPort-Methode für die PostgreSQL Serverressource auf. Das folgende Beispiel zeigt, wie Sie den Hostport für den pgAdmin-Container konfigurieren:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres")
                      .WithPgAdmin(pgAdmin => pgAdmin.WithHostPort(5050));

var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Der vorhergehende Code fügt den Hostport für den pgAdmin-Container hinzu und konfiguriert ihn. Der Hostport wird andernfalls zufällig zugewiesen.

Hinzufügen der PostgreSQL pgWeb-Ressource

Beim Hinzufügen von PostgreSQL-Ressourcen zum builder mit der AddPostgres-Methode können Sie Aufrufe an WithPgWeb verketten, um den sosedoff/pgweb-Container hinzuzufügen. Dieser Container ist ein plattformunabhängiger Client für PostgreSQL Datenbanken, der ein webbasiertes Administrator-Dashboard bereitstellt. Betrachten Sie das folgende Beispiel:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres")
                      .WithPgWeb();

var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Der vorangehende Code fügt einen Container basierend auf dem docker.io/sosedoff/pgweb Image hinzu. Alle registrierten PostgresDatabaseResource Instanzen werden verwendet, um eine Konfigurationsdatei pro Instanz zu erstellen, und jede Konfiguration ist an das pgweb Container-Lesezeichenverzeichnis gebunden. Weitere Informationen finden Sie unter PgWeb-Dokumente: Server Verbindungsmarken.

Konfigurieren des pgWeb-Hostports

Rufen Sie zum Konfigurieren des Hostports für den pgWeb-Container die WithHostPort-Methode für die PostgreSQL Serverressource auf. Das folgende Beispiel zeigt, wie Sie den Hostport für den pgAdmin-Container konfigurieren:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres")
                      .WithPgWeb(pgWeb => pgWeb.WithHostPort(5050));

var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Der vorhergehende Code fügt den Hostport für den pgWeb-Container hinzu und konfiguriert ihn. Der Hostport wird andernfalls zufällig zugewiesen.

Hinzufügen der PostgreSQL-Serverressource mit Datenvolumen

Um der PostgreSQL Serverressource ein Datenvolume hinzuzufügen, rufen Sie die WithDataVolume Methode für die PostgreSQL Serverressource auf:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres")
                      .WithDataVolume(isReadOnly: false);

var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Das Datenvolume wird verwendet, um die PostgreSQL Serverdaten außerhalb des Lebenszyklus des Containers zu speichern. Das Datenvolume wird am /var/lib/postgresql/data Pfad im PostgreSQL Servercontainer bereitgestellt und wenn kein name Parameter angegeben wird, wird der Name zufällig generiert. Weitere Informationen zu Datenvolumen und Details, warum sie gegenüber Bind-Mounts bevorzugt werden, sind in der Docker Dokumentation zu Volumes zu finden.

Wichtig

Einige Datenbankintegrationen, einschließlich der .NET AspirePostgreSQL Integration, können Datenvolumes nach der Bereitstellung auf Azure Container Apps (ACA) nicht erfolgreich verwenden. Dies liegt daran, dass ACA Server Message Block (SMB) verwendet, um Container mit Datenvolumes zu verbinden, und einige Systeme können diese Verbindung nicht verwenden. Aspire Im Dashboard weist eine datenbank, die von diesem Problem betroffen ist, den Status "Aktivieren" oder "Aktivierung fehlgeschlagen" auf, wird aber nie als "Ausführen" aufgeführt.

Sie können das Problem beheben, indem Sie den verwalteten Service Azure Database für PostgreSQL verwenden, um die bereitgestellte Datenbank anstelle eines Containers in ACA zu hosten. Unabhängig von diesem Problem ist dies der empfohlene Ansatz. Der folgende App-Host-Code zeigt, wie eine Datenbank auf Azure Database für PostgreSQL bereitgestellt wird, aber während der Entwicklung als Container mit einem Datenvolumen ausgeführt wird.

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddAzurePostgresFlexibleServer("postgres")
                      .RunAsContainer(container => 
                      {
                        container.WithDataVolume();
                      });

builder.Build().Run();

Hinzufügen einer Serverressource PostgreSQL mit Datenbindung

Rufen Sie die PostgreSQL-Methode auf, um der WithDataBindMount Serverressource eine Datenbindung hinzuzufügen:

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres")
                      .WithDataBindMount(
                          source: @"C:\PostgreSQL\Data",
                          isReadOnly: false);

var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Wichtig

Daten-Bindemounts haben eine eingeschränkte Funktionalität im Vergleich zu Volumes, die eine bessere Leistung, Portabilität und Sicherheit bieten und somit für Produktionsumgebungen besser geeignet sind. Bind-Mounts ermöglichen jedoch direkten Zugriff auf und Änderungen von Dateien auf dem Hostsystem, was ideal für Entwicklung und Tests ist, bei denen Echtzeitänderungen erforderlich sind.

Data-Bind-Mounts basieren auf dem Dateisystem des Hostcomputers, um die PostgreSQL-Serverdaten über Containerneustarts hinweg beizubehalten. Die Datenbindemount wird am Pfad C:\PostgreSQL\Data unter Windows (oder /PostgreSQL/Data auf Unix) auf dem Host-Rechner im PostgreSQL Servercontainer eingehängt. Weitere Informationen zu Daten-Bind-Mounts finden Sie in der Docker-Dokumentation: Bind-Mounts.

Füge PostgreSQL-Serverressource mit init bind mount hinzu

Rufen Sie die PostgreSQL-Methode auf, um der WithInitBindMount-Serverressource ein "init bind mount" hinzuzufügen.

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres")
                      .WithInitBindMount(@"C:\PostgreSQL\Init");

var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Das Init-Bind-Mount stützt sich auf das Dateisystem des Hostcomputers, um die PostgreSQL Serverdatenbank mit dem init-Ordner der Container zu initialisieren. Dieser Ordner wird für die Initialisierung verwendet, wobei alle ausführbaren Shellskripts oder .sql-Befehlsdateien ausgeführt werden, nachdem der Ordner mit Postgres-Daten erstellt wurde. Der Init-Bind-Mount wird auf dem Pfad C:\PostgreSQL\Init unter Windows (oder /PostgreSQL/Init auf Unix) auf dem Hostcomputer im PostgreSQL-Servercontainer gemountet.

Hinzufügen der PostgreSQL Server-Ressource mit Parametern

Wenn Sie explizit den Benutzernamen und das Kennwort angeben möchten, die vom Containerimage verwendet werden, können Sie diese Anmeldeinformationen als Parameter angeben. Betrachten Sie das folgende alternative Beispiel:

var builder = DistributedApplication.CreateBuilder(args);

var username = builder.AddParameter("username", secret: true);
var password = builder.AddParameter("password", secret: true);

var postgres = builder.AddPostgres("postgres", username, password);
var postgresdb = postgres.AddDatabase("postgresdb");

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

// After adding all resources, run the app...

Weitere Informationen zum Bereitstellen von Parametern finden Sie unter externe Parameter.

Hosten von Integritätsprüfungen für Integration

Die PostgreSQL Hosting-Integration fügt automatisch eine Gesundheitsprüfung für die PostgreSQL Server-Ressource hinzu. Die Funktionsprüfung überprüft, ob der PostgreSQL-Server läuft und ob eine Verbindung hergestellt werden kann.

Die Hostingintegration basiert auf dem 📦 AspNetCore.HealthChecks.Npgsql NuGet-Paket.

Client Eingliederung

Um mit der .NET AspirePostgreSQLEntity Framework Core-Klientintegration zu beginnen, installieren Sie das 📦Aspire.Npgsql.EntityFrameworkCore.PostgreSQL-NuGet-Paket im Projekt, das von der Anwendung, die den PostgreSQL-Klient nutzt, verwendet wird. Die .NET AspirePostgreSQLEntity Framework Core Clientintegration registriert Ihre gewünschten DbContext Unterklasseninstanzen, die Sie für die Interaktion mit PostgreSQLverwenden können.

dotnet add package Aspire.Npgsql.EntityFrameworkCore.PostgreSQL

Npgsql-Datenbankkontext hinzufügen

Rufen Sie in der Program.cs Datei Ihres klientenverbrauchenden Projekts die AddNpgsqlDbContext Erweiterungsmethode an einem beliebigen IHostApplicationBuilder auf, um Ihre DbContext Unterklasse für die Nutzung über den Dependency Injection-Container zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.

builder.AddNpgsqlDbContext<YourDbContext>(connectionName: "postgresdb");

Tipp

Der parameter connectionName muss mit dem Namen übereinstimmen, der beim Hinzufügen der PostgreSQL Serverressource im App-Hostprojekt verwendet wird. Weitere Informationen finden Sie unter PostgreSQL Serverressource hinzufügen.

Nachdem Sie YourDbContext zum Generator hinzugefügt haben, können Sie die YourDbContext Instanz mithilfe der Abhängigkeitseinfügung abrufen. Wenn Sie beispielsweise das Datenquellenobjekt aus einem Beispieldienst abrufen möchten, definieren Sie es als Konstruktorparameter, und stellen Sie sicher, dass die ExampleService Klasse im Container zum Einfügen von Abhängigkeiten registriert ist:

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

Weitere Informationen zur Abhängigkeits-Injektion finden Sie unter .NET Abhängigkeits-Injektion.

Anreichern eines Npgsql-Datenbankkontexts

Möglicherweise möchten Sie die standardmäßige Entity Framework-Methode verwenden, um einen Datenbankkontext abzurufen und ihn dem Abhängigkeitsinjektionscontainer hinzuzufügen.

builder.Services.AddDbContext<YourDbContext>(options =>
    options.UseNpgsql(builder.Configuration.GetConnectionString("postgresdb")
        ?? throw new InvalidOperationException("Connection string 'postgresdb' not found.")));

Anmerkung

Der Verbindungszeichenfolgenname, den Sie an die GetConnectionString-Methode übergeben, muss mit dem Namen übereinstimmen, der beim Hinzufügen der PostgreSQL Serverressource im App-Hostprojekt verwendet wird. Weitere Informationen finden Sie unter PostgreSQL Serverressource hinzufügen.

Sie haben mehr Flexibilität, wenn Sie den Datenbankkontext auf diese Weise erstellen, z. B.:

  • Sie können vorhandenen Konfigurationscode für den Datenbankkontext wiederverwenden, ohne ihn für .NET.NET Aspireneu zu schreiben.
  • Sie können Entity Framework Core Interceptors verwenden, um Datenbankvorgänge zu ändern.
  • Sie können sich entscheiden, Entity Framework Core Kontextpooling nicht zu verwenden, was unter bestimmten Umständen besser funktioniert.

Wenn Sie diese Methode verwenden, können Sie den Datenbankkontext mit .NET.NET Aspire-style-Wiederholungen, Integritätsüberprüfungen, Protokollierungs- und Telemetriefunktionen verbessern, indem Sie die EnrichNpgsqlDbContext-Methode aufrufen:

builder.EnrichNpgsqlDbContext<YourDbContext>(
    configureSettings: settings =>
    {
        settings.DisableRetry = false;
        settings.CommandTimeout = 30;
    });

Der settings-Parameter ist eine Instanz der NpgsqlEntityFrameworkCorePostgreSQLSettings Klasse.

Konfiguration

Die .NET AspirePostgreSQLEntity Framework Core Integration bietet mehrere Konfigurationsmethoden und -optionen, um die Anforderungen und Konventionen Ihres Projekts zu erfüllen.

Verwenden Sie eine Verbindungszeichenfolge

Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings verwenden, geben Sie beim Aufrufen der AddNpgsqlDbContext-Methode den Namen der Verbindungszeichenfolge an:

builder.AddNpgsqlDbContext<MyDbContext>("pgdb");

Die Verbindungszeichenfolge wird aus dem Konfigurationsabschnitt ConnectionStrings abgerufen:

{
  "ConnectionStrings": {
    "pgdb": "Host=myserver;Database=test"
  }
}

Der EnrichNpgsqlDbContext wird den ConnectionStrings Konfigurationsabschnitt nicht verwenden, da erwartet wird, dass zum Zeitpunkt des Aufrufs ein DbContext registriert wird.

Weitere Informationen finden Sie im ConnectionString.

Verwenden von Konfigurationsanbietern

Die .NET AspirePostgreSQLEntity Framework Core-Integration unterstützt Microsoft.Extensions.Configuration. Sie lädt die NpgsqlEntityFrameworkCorePostgreSQLSettings aus Konfigurationsdateien wie appsettings.json mithilfe des Aspire:Npgsql:EntityFrameworkCore:PostgreSQL-Schlüssels. Wenn Sie Ihre Konfigurationen im Abschnitt Aspire:Npgsql:EntityFrameworkCore:PostgreSQL eingerichtet haben, können Sie die Methode einfach aufrufen, ohne Parameter zu übergeben.

Das folgende Beispiel zeigt eine appsettings.json Datei, die einige der verfügbaren Optionen konfiguriert:

{
  "Aspire": {
    "Npgsql": {
      "EntityFrameworkCore": {
        "PostgreSQL": {
          "ConnectionString": "Host=myserver;Database=postgresdb",
          "DisableHealthChecks": true,
          "DisableTracing": true
        }
      }
    }
  }
}

Die vollständige PostgreSQLEntity Framework Core Clientintegration JSON Schema finden Sie unter Aspire. Npgsql.EntityFrameworkCore.PostgreSQL/ConfigurationSchema.json.

Verwenden Sie Inline-Delegaten

Sie können auch den Action<NpgsqlEntityFrameworkCorePostgreSQLSettings> Delegate übergeben, um einige oder alle Optionen inline einzurichten, z. B. um die ConnectionStringfestzulegen:

builder.AddNpgsqlDbContext<YourDbContext>(
    "pgdb",
    static settings => settings.ConnectionString = "<YOUR CONNECTION STRING>");

Konfigurieren mehrerer DbContext-Klassen

Wenn Sie mehrere DbContext mit unterschiedlicher Konfiguration registrieren möchten, können Sie den Namen des $"Aspire:Npgsql:EntityFrameworkCore:PostgreSQL:{typeof(TContext).Name}"-Konfigurationsabschnitts verwenden. Die JSON-Konfiguration würde wie folgt aussehen:

{
  "Aspire": {
    "Npgsql": {
      "EntityFrameworkCore": {
        "PostgreSQL": {
          "ConnectionString": "<YOUR CONNECTION STRING>",
          "DisableHealthChecks": true,
          "DisableTracing": true,
          "AnotherDbContext": {
            "ConnectionString": "<ANOTHER CONNECTION STRING>",
            "DisableTracing": false
          }
        }
      }
    }
  }
}

Anschließend würde das Aufrufen der AddNpgsqlDbContext-Methode mit dem AnotherDbContext-Typ-Parameter die Einstellungen aus dem Aspire:Npgsql:EntityFrameworkCore:PostgreSQL:AnotherDbContext-Abschnitt laden.

builder.AddNpgsqlDbContext<AnotherDbContext>();

Client Integrationsgesundheitsprüfungen

Standardmäßig sind bei .NET.NET AspireClient-IntegrationenGesundheitsprüfungen für alle Dienste aktiviert. Ebenso ermöglichen viele .NET.NET AspireHostingintegrationen auch Gesundheitsprüfungsendpunkte. Weitere Informationen finden Sie unter:

Standardmäßig wird die .NET AspirePostgreSQLEntity Framework Core Integration wie folgt behandelt:

  • Fügt DbContextHealthCheckhinzu, die die EF Core-Methode von CanConnectAsyncaufruft. Der Name der Gesundheitsprüfung ist der Name des Typs TContext.
  • Integriert mit dem /health HTTP-Endpunkt, der angibt, dass alle registrierten Integritätsprüfungen bestanden werden müssen, damit die Anwendung als bereit zur Annahme von Datenverkehr gilt.

Beobachtbarkeit und Telemetrie

.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Ablaufverfolgungs- und Metrikkonfigurationen ein, die manchmal als die Säulen der Beobachtbarkeitbezeichnet werden. Weitere Informationen zur Integrations-Observability und Telemetrie finden Sie unter .NET.NET Aspire Integrationsübersicht. Abhängig vom unterstützenden Dienst unterstützen einige Integrationen möglicherweise nur einige dieser Funktionen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetriefeatures können auch mithilfe der techniken deaktiviert werden, die im Abschnitt Configuration dargestellt werden.

Protokollierung

Die .NET AspirePostgreSQLEntity Framework Core Integration verwendet die folgenden Protokollkategorien:

  • Microsoft.EntityFrameworkCore.ChangeTracking
  • Microsoft.EntityFrameworkCore.Database.Command
  • Microsoft.EntityFrameworkCore.Database.Connection
  • Microsoft.EntityFrameworkCore.Database.Transaction
  • Microsoft.EntityFrameworkCore.Migrations
  • Microsoft.EntityFrameworkCore.Infrastructure
  • Microsoft.EntityFrameworkCore.Migrations
  • Microsoft.EntityFrameworkCore.Model
  • Microsoft.EntityFrameworkCore.Model.Validation
  • Microsoft.EntityFrameworkCore.Query
  • Microsoft.EntityFrameworkCore.Update

Nachverfolgung

Die .NET AspirePostgreSQLEntity Framework Core-Integration gibt die folgenden Tracing-Aktivitäten mittels OpenTelemetry aus:

  • Npgsql

Metriken

Die .NET AspirePostgreSQLEntity Framework Core Integration gibt die folgenden Metriken mithilfe von OpenTelemetryaus:

  • 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_total_execution_strategy_operation_failures
    • ec_Microsoft_E_execution_strategy_operation_failures_per_second
    • ec_Microsoft_EntityFramew_total_optimistic_concurrency_failures
    • ec_Microsoft_EntityF_optimistic_concurrency_failures_per_second
  • Npgsql:

    • ec_Npgsql_bytes_written_per_second
    • ec_Npgsql_bytes_read_per_second
    • ec_Npgsql_commands_per_second
    • ec_Npgsql_total_commands
    • ec_Npgsql_current_commands
    • ec_Npgsql_failed_commands
    • ec_Npgsql_prepared_commands_ratio
    • ec_Npgsql_connection_pools
    • ec_Npgsql_multiplexing_average_commands_per_batch
    • ec_Npgsql_multiplexing_average_write_time_per_batch

Siehe auch