Freigeben über


.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

Siehe auch