Componente de .NET AspireOracle de Entity Framework
En este artículo, aprenderá a usar la integración de .NET AspireOracleEntity Framework Core. La biblioteca Aspire.Oracle.EntityFrameworkCore
se usa para registrar un System.Data.Entity.DbContext como singleton en el contenedor de inserción de dependencias para conectarse a bases de datos de Oracle. También habilita la agrupación de conexiones, los reintentos, las comprobaciones de estado, el registro y la telemetría.
Comenzar
Necesita una base de datos Oracle y una cadena de conexión para acceder a la base de datos. Para empezar a trabajar con la integración de .NET AspireOracleEntity Framework Core, instale el paquete NuGet 📦Aspire.Oracle.EntityFrameworkCore en el proyecto de consumo client.
dotnet add package Aspire.Oracle.EntityFrameworkCore
Para obtener más información, consulte dotnet add package o administrar las dependencias de paquetes en aplicaciones .NET.
Ejemplo de uso
En el archivo Program.cs de tu proyecto que consume client, llama a la extensión AddOracleDatabaseDbContext para registrar un System.Data.Entity.DbContext para su uso a través del contenedor de inyección de dependencias.
builder.AddOracleDatabaseDbContext<MyDbContext>("oracledb");
A continuación, puede recuperar la instancia de DbContext mediante inyección de dependencias. Por ejemplo, para recuperar el identificador client de un servicio:
public class ExampleService(MyDbContext context)
{
// Use context...
}
También es posible que tenga que configurar opciones específicas de la base de datos Oracle, o registrar un DbContext
de otras formas. En este caso, llame al método de extensión EnrichOracleDatabaseDbContext
, por ejemplo:
var connectionString = builder.Configuration.GetConnectionString("oracledb");
builder.Services.AddDbContextPool<MyDbContext>(
dbContextOptionsBuilder => dbContextOptionsBuilder.UseOracle(connectionString));
builder.EnrichOracleDatabaseDbContext<MyDbContext>();
Uso del host de la aplicación
Para modelar el recurso Oracleserver en el host de la aplicación, instale el paquete NuGet 📦Aspire.Hosting.Oracle en el proyecto de host de aplicación .
dotnet add package Aspire.Hosting.Oracle
En el proyecto host de la aplicación, registre un contenedor de Oracle y consuma la conexión mediante los métodos siguientes:
var builder = DistributedApplication.CreateBuilder(args);
var oracle = builder.AddOracle("oracle");
var oracledb = oracle.AddDatabase("oracledb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(oracledb);
Cuando quiera proporcionar explícitamente una contraseña, puede proporcionarla como parámetro. Considere el siguiente ejemplo alternativo:
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);
Para obtener más información, vea Parámetros externos.
Configuración
La integración de .NET AspireOracleEntity Framework Core proporciona varias opciones para configurar la conexión de base de datos en función de los requisitos y convenciones del proyecto.
Uso de una cadena de conexión
Al usar una cadena de conexión de la sección de configuración de ConnectionStrings
, puede proporcionar el nombre de la cadena de conexión al llamar a builder.AddOracleDatabaseDbContext<TContext>()
:
builder.AddOracleDatabaseDbContext<MyDbContext>("myConnection");
Luego, se recuperará la cadena de conexión de la sección de configuración de ConnectionStrings
.
{
"ConnectionStrings": {
"myConnection": "Data Source=TORCL;User Id=myUsername;Password=myPassword;"
}
}
El EnrichOracleDatabaseDbContext
no usará la sección de configuración de ConnectionStrings
, ya que espera que un DbContext
esté registrado en el momento en que se llama.
Para obtener más información, consulte la documentación ODP.NET.
Uso de proveedores de configuración
La integración de .NET AspireOracleEntity Framework Core admite Microsoft.Extensions.Configuration. Carga el OracleEntityFrameworkCoreSettings
desde la configuración mediante la clave Aspire:Oracle:EntityFrameworkCore
.
En el ejemplo siguiente se muestra un appsettings.json que configura algunas de las opciones disponibles:
{
"Aspire": {
"Oracle": {
"EntityFrameworkCore": {
"DisableHealthChecks": true,
"DisableTracing": true,
"DisableMetrics": false,
"DisableRetry": false,
"Timeout": 30
}
}
}
}
Consejo (if context refers to advice)
La propiedad Timeout
se mide en segundos. Cuando se establece como se muestra en el ejemplo anterior, el tiempo de espera es de 30 segundos.
Usa delegados en línea
También puede pasar el delegado de Action<OracleEntityFrameworkCoreSettings> configureSettings
para configurar algunas o todas las opciones en línea, por ejemplo, para deshabilitar las verificaciones de salud desde el código:
builder.AddOracleDatabaseDbContext<MyDbContext>(
"oracle",
static settings => settings.DisableHealthChecks = true);
o
builder.EnrichOracleDatabaseDbContext<MyDbContext>(
static settings => settings.DisableHealthChecks = true);
Comprobaciones de estado
De forma predeterminada, las integraciones de .NET.NET Aspire habilitan las comprobaciones de estado de para todos los servicios. Para obtener más información, consulte .NET.NET Aspire integrations overview.
La integración de .NET AspireOracleEntity Framework Core registra una comprobación de estado básica que comprueba la conexión de base de datos dada una TContext
. La comprobación de estado está habilitada de forma predeterminada y se puede deshabilitar mediante la propiedad DisableHealthChecks
en la configuración.
Observabilidad y telemetría
.NET .NET Aspire integraciones configuran automáticamente las configuraciones de registro, seguimiento y métricas, que a veces se conocen como los pilares de la observabilidad. Para obtener más información sobre la observabilidad de integración y la telemetría, consulte información general sobre las integraciones de .NET.NET Aspire. En función del servicio de respaldo, algunas integraciones solo pueden admitir algunas de estas características. Por ejemplo, algunas integraciones admiten el registro y el seguimiento, pero no las métricas. Las características de telemetría también se pueden deshabilitar mediante las técnicas presentadas en la sección de configuración .
Registro
La integración de .NET AspireOracleEntity Framework Core usa las siguientes categorías de registro:
Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
Microsoft.EntityFrameworkCore.Database.Command.CommandError
Trazado
La integración de .NET AspireOracleEntity Framework Core emitirá las siguientes actividades de seguimiento mediante OpenTelemetry:
- OpenTelemetry. Instrumentation.EntityFrameworkCore
Métricas
La integración de .NET AspireOracleEntity Framework Core admite actualmente las siguientes métricas:
- Microsoft.EntityFrameworkCore
Consulte también
- Entity Framework Core documentos
- .NET .NET Aspire integraciones
- del repositorio