Partilhar via


Componente Entity Framework .NET AspireOracle

Neste artigo, você aprenderá a usar a integração .NET AspireOracleEntity Framework Core. A biblioteca Aspire.Oracle.EntityFrameworkCore é usada para registrar um System.Data.Entity.DbContext como um singleton no contêiner DI para conexão com bancos de dados Oracle. Ele também permite o pool de conexões, reintentos, verificações de integridade, registo de logs e telemetria.

Começar

Você precisa de um banco de dados Oracle e uma cadeia de conexão para acessar o banco de dados. Para começar com a integração .NET AspireOracleEntity Framework Core, instale o pacote NuGet 📦Aspire.Oracle. EntityFrameworkCore no projeto consumidor client.

dotnet add package Aspire.Oracle.EntityFrameworkCore

Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em aplicações .NET.

Exemplo de utilização

No arquivo Program.cs do seu projeto de consumo de client, chame a extensão AddOracleDatabaseDbContext para registrar um System.Data.Entity.DbContext para uso por meio do contêiner de injeção de dependência.

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

Em seguida, você pode recuperar a instância DbContext usando a injeção de dependência. Por exemplo, para recuperar o client de um serviço:

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

Também pode ser necessário configurar opções específicas de Oracle banco de dados ou registrar um DbContext de outras maneiras. Neste caso, chame o método de extensão EnrichOracleDatabaseDbContext, por exemplo:

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

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

builder.EnrichOracleDatabaseDbContext<MyDbContext>();

Utilização do anfitrião da aplicação

Para modelar o recurso Oracleserver no host do aplicativo, instale o 📦Aspire. Hospedagem.Oracle pacote NuGet no aplicativo host projeto.

dotnet add package Aspire.Hosting.Oracle

Em seu projeto de host de aplicativo, registre um contêiner de Oracle e consuma a conexão usando os seguintes métodos:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Quando você deseja fornecer explicitamente uma senha, você pode fornecê-la como um parâmetro. Considere o seguinte exemplo 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 obter mais informações, consulte Parâmetros externos.

Configuração

A integração .NET AspireOracleEntity Framework Core fornece várias opções para configurar a conexão de banco de dados com base nos requisitos e convenções do seu projeto.

Usar uma cadeia de conexão

Ao usar uma cadeia de conexão da seção de configuração de ConnectionStrings, você pode fornecer o nome da cadeia de conexão ao chamar builder.AddOracleDatabaseDbContext<TContext>():

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

E, em seguida, a cadeia de conexão será recuperada da seção de configuração ConnectionStrings:

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

O EnrichOracleDatabaseDbContext não usará a seção de configuração ConnectionStrings, pois espera que um DbContext seja registrado no ponto em que é chamado.

Para obter mais informações, consulte a documentação do ODP.NET.

Usar provedores de configuração

A integração .NET AspireOracleEntity Framework Core suporta Microsoft.Extensions.Configuration. Ele carrega o OracleEntityFrameworkCoreSettings da configuração usando a chave Aspire:Oracle:EntityFrameworkCore.

O exemplo a seguir mostra um appsettings.json que configura algumas das opções disponíveis:

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

Dica

A propriedade Timeout é medida em segundos. Quando definido como mostrado no exemplo anterior, o tempo limite é de 30 segundos.

Usar delegados embutidos

Você também pode passar o delegado Action<OracleEntityFrameworkCoreSettings> configureSettings para configurar algumas ou todas as opções em linha, por exemplo, para desativar as verificações de integridade a partir do código:

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

ou

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

Controlos sanitários

Por padrão, as integrações .NET.NET Aspire habilitam verificações de integridade para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral das integrações.

A integração .NET AspireOracleEntity Framework Core regista uma verificação de integridade básica que verifica a conexão da base de dados dada uma TContext. A verificação de integridade é habilitada por padrão e pode ser desabilitada usando a propriedade DisableHealthChecks na configuração.

Observabilidade e telemetria

.NET .NET Aspire integrações automaticamente configuram Registo, Rastreamento e Métricas, que às vezes são conhecidas como os pilares da observabilidade. Para obter mais informações sobre observabilidade e telemetria de integração, consulte Visão geral de integrações .NET.NET Aspire. Dependendo do serviço de suporte, algumas integrações podem suportar apenas alguns desses recursos. Por exemplo, algumas integrações suportam registro em log e rastreamento, mas não métricas. Os recursos de telemetria também podem ser desativados usando as técnicas apresentadas na seção Configuração.

Registo

A integração .NET AspireOracleEntity Framework Core usa as seguintes categorias de log:

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

Rastreio

A integração .NET AspireOracleEntity Framework Core emitirá as seguintes atividades de rastreio utilizando OpenTelemetry:

  • OpenTelemetry. Instrumentação.EntityFrameworkCore

Métricas

Atualmente, a integração .NET AspireOracleEntity Framework Core suporta as seguintes métricas:

  • Microsoft.EntityFrameworkCore

Ver também