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.
- .NET CLI
- PackageReference
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.
- .NET CLI
- PackageReference
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