Condividi tramite


.NET Aspire Oracle componente Entity Framework

Questo articolo illustra come usare l'integrazione .NET AspireOracleEntity Framework Core. La libreria Aspire.Oracle.EntityFrameworkCore viene usata per registrare un System.Data.Entity.DbContext come singleton nel contenitore DI per la connessione ai database Oracle. Consente anche il pool di connessioni, i tentativi di ripetizione, i controlli di integrità, il logging e la telemetria.

Inizia

Per accedere al database è necessario un database Oracle e una stringa di connessione. Per iniziare a usare l'integrazione di .NET AspireOracleEntity Framework Core, installare il pacchetto NuGet 📦Aspire.Oracle.EntityFrameworkCore nel progetto client di utilizzo.

dotnet add package Aspire.Oracle.EntityFrameworkCore

Per ulteriori informazioni, vedere dotnet add package o Gestire le dipendenze dei pacchetti nelle applicazioni .NET.

Esempio di utilizzo

Nel file Program.cs del progetto che consuma client, chiamare l'estensione AddOracleDatabaseDbContext per registrare un System.Data.Entity.DbContext da usare tramite il contenitore di iniezione delle dipendenze.

builder.AddOracleDatabaseDbContext<MyDbContext>("oracledb");

È quindi possibile recuperare l'istanza di DbContext usando l'iniezione di dipendenze. Ad esempio, per recuperare il client da un servizio:

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

Potrebbe anche essere necessario configurare opzioni specifiche di Oracle database o registrare un DbContext in altri modi. In questo caso chiamare il metodo di estensione EnrichOracleDatabaseDbContext, ad esempio:

var connectionString = builder.Configuration.GetConnectionString("oracledb");

builder.Services.AddDbContextPool<MyDbContext>(
    dbContextOptionsBuilder => dbContextOptionsBuilder.UseOracle(connectionString));

builder.EnrichOracleDatabaseDbContext<MyDbContext>();

Utilizzo dell'host dell'app

Per modellare la risorsa Oracleserver nell'host dell'app, installare il pacchetto NuGet 📦Aspire.Hosting.Oracle nel progetto host dell'app .

dotnet add package Aspire.Hosting.Oracle

Nel progetto host dell'app registrare un contenitore Oracle e usare la connessione usando i metodi seguenti:

var builder = DistributedApplication.CreateBuilder(args);

var oracle = builder.AddOracle("oracle");
var oracledb = oracle.AddDatabase("oracledb");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(oracledb);

Quando si vuole specificare in modo esplicito una password, è possibile specificarla come parametro. Si consideri l'esempio alternativo seguente:

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);

Per altre informazioni, vedere Parametri esterni.

Configurazione

L'integrazione .NET AspireOracleEntity Framework Core offre più opzioni per configurare la connessione al database in base ai requisiti e alle convenzioni del progetto.

Usare una stringa di connessione

Quando si usa una stringa di connessione dalla sezione di configurazione ConnectionStrings, è possibile specificare il nome della stringa di connessione quando si chiama builder.AddOracleDatabaseDbContext<TContext>():

builder.AddOracleDatabaseDbContext<MyDbContext>("myConnection");

La stringa di connessione verrà quindi recuperata dalla sezione di configurazione ConnectionStrings:

{
  "ConnectionStrings": {
    "myConnection": "Data Source=TORCL;User Id=myUsername;Password=myPassword;"
  }
}

Il EnrichOracleDatabaseDbContext non userà la sezione di configurazione ConnectionStrings perché prevede che un DbContext venga registrato nel momento in cui viene chiamato.

Per ulteriori informazioni, consultare la documentazione ODP.NET.

Usare i provider di configurazione

L'integrazione .NET AspireOracleEntity Framework Core supporta Microsoft.Extensions.Configuration. Carica il OracleEntityFrameworkCoreSettings dalla configurazione usando la chiave Aspire:Oracle:EntityFrameworkCore.

L'esempio seguente illustra un appsettings.json che configura alcune delle opzioni disponibili:

{
  "Aspire": {
    "Oracle": {
      "EntityFrameworkCore": {
        "DisableHealthChecks": true,
        "DisableTracing": true,
        "DisableMetrics": false,
        "DisableRetry": false,
        "Timeout": 30
      }
    }
  }
}

Suggerimento

La proprietà Timeout è espressa in secondi. Se impostato come illustrato nell'esempio precedente, il timeout è di 30 secondi.

Usare delegati inline

È anche possibile passare il delegato Action<OracleEntityFrameworkCoreSettings> configureSettings per configurare alcune o tutte le opzioni inline, ad esempio per disabilitare i controlli di integrità dal codice:

builder.AddOracleDatabaseDbContext<MyDbContext>(
    "oracle",
    static settings => settings.DisableHealthChecks  = true);

o

builder.EnrichOracleDatabaseDbContext<MyDbContext>(
    static settings => settings.DisableHealthChecks  = true);

Controlli di salute

Per impostazione predefinita, le integrazioni di .NET.NET Aspire attivano verifiche di integrità per tutti i servizi. Per altre informazioni, vedere panoramica delle integrazioni .NET.NET Aspire.

L'integrazione .NET AspireOracleEntity Framework Core registra un controllo dello stato di salute di base che verifica la connessione al database dato un TContext. Il controllo integrità è abilitato per impostazione predefinita e può essere disabilitato usando la proprietà DisableHealthChecks nella configurazione.

Osservabilità e telemetria

.NET .NET Aspire le integrazioni configurano automaticamente la registrazione, il tracciamento e le metriche, talvolta noti come i pilastri dell'osservabilità. Per altre informazioni sull'osservabilità e la telemetria dell'integrazione, vedere panoramica delle integrazioni .NET.NET Aspire. A seconda del servizio di backup, alcune integrazioni possono supportare solo alcune di queste funzionalità. Ad esempio, alcune integrazioni supportano la registrazione e la traccia, ma non le metriche. Le funzionalità di telemetria possono essere disabilitate anche usando le tecniche presentate nella sezione Configurazione .

Registrazione

L'integrazione .NET AspireOracleEntity Framework Core usa le categorie di log seguenti:

  • Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
  • Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
  • Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
  • Microsoft.EntityFrameworkCore.Database.Command.CommandError

Rintracciamento

L'integrazione .NET AspireOracleEntity Framework Core genererà le attività di traccia seguenti usando OpenTelemetry:

  • OpenTelemetry. Instrumentation.EntityFrameworkCore

Metriche

L'integrazione .NET AspireOracleEntity Framework Core supporta attualmente le metriche seguenti:

  • Microsoft.EntityFrameworkCore

Vedere anche