.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.
- .NET CLI interfaccia della riga di comando
- PackageReference
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 .
- .NET dell'interfaccia della riga di comando
- PackageReference
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