Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Enthält: Hosting-Integration —&—
Client 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_db
erstellt. 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 ConnectionString
festzulegen:
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
DbContextHealthCheck
hinzu, die die EF Core-Methode von CanConnectAsyncaufruft. Der Name der Gesundheitsprüfung ist der Name des TypsTContext
. - 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