Compartilhar 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 System.Data.Entity.DbContext como um singleton no contêiner de DI para ligar-se a bancos de dados Oracle. Ele também habilita o pool de conexões, novas tentativas, verificações de integridade, registro em log 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 a usar a integração .NET AspireOracleEntity Framework Core, instale o pacote NuGet 📦Aspire.Oracle.EntityFrameworkCore no projeto de client consumidor.

dotnet add package Aspire.Oracle.EntityFrameworkCore

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

Exemplo de uso

No arquivo Program.cs do seu projeto que consome client, chame a extensão AddOracleDatabaseDbContext para registrar o 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ências. Por exemplo, para recuperar o client de um serviço:

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

Talvez você também precise configurar opções específicas de Oracle banco de dados ou registrar um DbContext de outras maneiras. Nesse 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>();

Uso do host do aplicativo

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

dotnet add package Aspire.Hosting.Oracle

No projeto de host do aplicativo, registre um contêiner 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 quiser 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 ConnectionStrings, você pode fornecer o nome da cadeia de conexão ao chamar builder.AddOracleDatabaseDbContext<TContext>():

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

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

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

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

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

Usar provedores de configuração

A integração .NET AspireOracleEntity Framework Core dá suporte a Microsoft.Extensions.Configuration. Ele carrega OracleEntityFrameworkCoreSettings a partir 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 desabilitar 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);

Verificações de saúde

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 de integrações.

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

Observabilidade e telemetria

.NET .NET Aspire integrações configuram automaticamente registros, monitoramento e métricas, que às vezes são conhecidos como os pilares da observabilidade. Para obter mais informações sobre a observabilidade e a telemetria de integração, consulte .NET.NET Aspire visão geral das integrações. Dependendo do serviço de backup, algumas integrações só podem dar suporte a alguns desses recursos. Por exemplo, algumas integrações dão suporte a registro em log e rastreamento, mas não a métricas. Os recursos de telemetria também podem ser desabilitados usando as técnicas apresentadas na seção Configuration.

Registro de Atividades

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

Rastreamento

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

  • OpenTelemetry. Instrumentation.EntityFrameworkCore

Métricas

A integração .NET AspireOracleEntity Framework Core atualmente dá suporte às seguintes métricas:

  • Microsoft.EntityFrameworkCore

Consulte também