Compartir a través de


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