.NET Aspire Oracle Entity Framework-Komponente
In diesem Artikel erfahren Sie, wie Sie die .NET AspireOracleEntity Framework Core-Integration verwenden. Die Aspire.Oracle.EntityFrameworkCore
-Bibliothek wird verwendet, um eine System.Data.Entity.DbContext als Singleton im DI-Container zu registrieren und eine Verbindung zu Oracle-Datenbanken herzustellen. Außerdem ermöglicht es Verbindungs-Pooling, Wiederholungen, Gesundheitsprüfungen, Protokollierung und Telemetrie.
Loslegen
Sie benötigen eine Oracle-Datenbank und eine Verbindungszeichenfolge für den Zugriff auf die Datenbank. Um mit der .NET AspireOracleEntity Framework Core-Integration zu beginnen, installieren Sie das 📦Aspire.Oracle.EntityFrameworkCore NuGet-Paket im verbrauchenden client-Projekt.
dotnet add package Aspire.Oracle.EntityFrameworkCore
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 AddOracleDatabaseDbContext-Erweiterung auf, um eine System.Data.Entity.DbContext für die Verwendung über den Container zum Einfügen von Abhängigkeiten zu registrieren.
builder.AddOracleDatabaseDbContext<MyDbContext>("oracledb");
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...
}
Möglicherweise müssen Sie auch bestimmte Optionen der Oracle-Datenbank konfigurieren oder ein(e) DbContext
auf andere Weise registrieren. Rufen Sie in diesem Fall die EnrichOracleDatabaseDbContext
Erweiterungsmethode auf, z. B.:
var connectionString = builder.Configuration.GetConnectionString("oracledb");
builder.Services.AddDbContextPool<MyDbContext>(
dbContextOptionsBuilder => dbContextOptionsBuilder.UseOracle(connectionString));
builder.EnrichOracleDatabaseDbContext<MyDbContext>();
App-Host-Nutzung
Um die Oracleserver Ressource im App-Host zu modellieren, installieren Sie das 📦Aspire.Hosting.Oracle NuGet-Paket im App-Host Projekt.
dotnet add package Aspire.Hosting.Oracle
Registrieren Sie in Ihrem App-Hostprojekt einen Oracle Container, und nutzen Sie die Verbindung mit den folgenden Methoden:
var builder = DistributedApplication.CreateBuilder(args);
var oracle = builder.AddOracle("oracle");
var oracledb = oracle.AddDatabase("oracledb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(oracledb);
Wenn Sie ein Kennwort explizit angeben möchten, können Sie es als Parameter angeben. Betrachten Sie das folgende alternative Beispiel:
var password = builder.AddParameter("password", secret: true);
var oracle = builder.AddOracle("oracle", password);
var oracledb = oracle.AddDatabase("oracledb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(oracledb);
Weitere Informationen finden Sie unter Externe Parameter.
Konfiguration
Die .NET AspireOracleEntity Framework Core Integration bietet mehrere Optionen zum Konfigurieren der Datenbankverbindung basierend auf den Anforderungen und Konventionen Ihres Projekts.
Verwenden Sie eine Verbindungszeichenfolge
Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
verwenden, können Sie beim Aufrufen von builder.AddOracleDatabaseDbContext<TContext>()
den Namen der Verbindungszeichenfolge angeben:
builder.AddOracleDatabaseDbContext<MyDbContext>("myConnection");
Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
abgerufen:
{
"ConnectionStrings": {
"myConnection": "Data Source=TORCL;User Id=myUsername;Password=myPassword;"
}
}
Der EnrichOracleDatabaseDbContext
wird den ConnectionStrings
-Konfigurationsabschnitt nicht verwenden, da er erwartet, dass eine DbContext
registriert ist, wenn er aufgerufen wird.
Weitere Informationen finden Sie in der ODP.NET-Dokumentation.
Verwenden Sie Konfigurationsanbieter
Die Integration von .NET AspireOracleEntity Framework Core unterstützt Microsoft.Extensions.Configuration. Sie lädt die OracleEntityFrameworkCoreSettings
mithilfe des Aspire:Oracle:EntityFrameworkCore
Schlüssels aus der Konfiguration.
Das folgende Beispiel zeigt ein Beispiel für ein appsettings.json, das einige der verfügbaren Optionen konfiguriert:
{
"Aspire": {
"Oracle": {
"EntityFrameworkCore": {
"DisableHealthChecks": true,
"DisableTracing": true,
"DisableMetrics": false,
"DisableRetry": false,
"Timeout": 30
}
}
}
}
Trinkgeld
Die Eigenschaft Timeout
ist in Sekunden angegeben. Wenn sie wie im vorherigen Beispiel dargestellt festgelegt ist, beträgt das Timeout 30 Sekunden.
Verwenden von Inlinedelegatn
Sie können auch den Action<OracleEntityFrameworkCoreSettings> configureSettings
Delegat übergeben, um einige oder alle Optionen inline einzurichten, z. B., um Health Checks im Code zu deaktivieren:
builder.AddOracleDatabaseDbContext<MyDbContext>(
"oracle",
static settings => settings.DisableHealthChecks = true);
oder
builder.EnrichOracleDatabaseDbContext<MyDbContext>(
static settings => settings.DisableHealthChecks = true);
Gesundheitschecks
Standardmäßig aktivieren .NET.NET Aspire-Integrationen Integritätsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.
Die .NET AspireOracleEntity Framework Core-Integration registriert eine grundlegende Gesundheitsprüfung, die die Datenbankverbindung anhand einer TContext
überprüft. Die Integritätsprüfung ist standardmäßig aktiviert und kann mithilfe der DisableHealthChecks
-Eigenschaft in der Konfiguration deaktiviert werden.
Observability und Telemetrie
.NET .NET Aspire Integrationen richten automatisch Konfigurationen für Protokollierung, Ablaufverfolgung und Metriken ein, die manchmal als die Säulen der Beobachtbarkeitbezeichnet werden. Weitere Informationen zur Integrations-Observability und Telemetrie finden Sie in der Übersicht über .NET.NET Aspire Integrationen. Abhängig vom Backend-Service unterstützen einige Integrationen möglicherweise nur einige dieser Funktionen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der im Abschnitt Configuration dargestellten Techniken deaktiviert werden.
Protokollierung
Die .NET AspireOracleEntity Framework Core Integration verwendet die folgenden Protokollkategorien:
Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
Microsoft.EntityFrameworkCore.Database.Command.CommandError
Verfolgung
Die .NET AspireOracleEntity Framework Core Integration gibt die folgenden Tracing-Aktivitäten mittels OpenTelemetryaus:
- OpenTelemetry. Instrumentation.EntityFrameworkCore
Metriken
Die .NET AspireOracleEntity Framework Core-Integration unterstützt derzeit die folgenden Metriken:
- Microsoft.EntityFrameworkCore