компонент Entity Framework .NET AspireOracle
Из этой статьи вы узнаете, как использовать интеграцию .NET AspireOracleEntity Framework Core. Библиотека Aspire.Oracle.EntityFrameworkCore
используется для регистрации System.Data.Entity.DbContext в контейнере DI для подключения к базам данных Oracle. Он также обеспечивает пул подключений, повторные попытки, проверки работоспособности, логирование и телеметрию.
Начало работы
Чтобы получить доступ к базе данных, вам потребуется база данных Oracle и строка подключения. Чтобы приступить к работе с интеграцией .NET AspireOracleEntity Framework Core, установите пакет NuGet 📦Aspire.Oracle.EntityFrameworkCore в используемом client проекте.
dotnet add package Aspire.Oracle.EntityFrameworkCore
Дополнительные сведения см. в разделах dotnet add package или Управление зависимостями пакетов в приложениях .NET.
Пример использования
В файле Program.cs вашего проекта, использующего client, вызовите расширение AddOracleDatabaseDbContext, чтобы зарегистрировать System.Data.Entity.DbContext для использования через контейнер инъекции зависимостей.
builder.AddOracleDatabaseDbContext<MyDbContext>("oracledb");
Затем можно получить экземпляр DbContext с помощью инъекции зависимостей. Например, чтобы получить client из службы:
public class ExampleService(MyDbContext context)
{
// Use context...
}
Также может потребоваться настроить определенные параметры базы данных Oracle или зарегистрировать DbContext
другими способами. В этом случае вызовите метод расширения EnrichOracleDatabaseDbContext
, например:
var connectionString = builder.Configuration.GetConnectionString("oracledb");
builder.Services.AddDbContextPool<MyDbContext>(
dbContextOptionsBuilder => dbContextOptionsBuilder.UseOracle(connectionString));
builder.EnrichOracleDatabaseDbContext<MyDbContext>();
Использование узла приложения
Чтобы моделировать ресурс Oracleserver на узле приложения, установите 📦Aspire.Hosting.Oracle пакет NuGet в проекте узла приложения .
dotnet add package Aspire.Hosting.Oracle
В проекте хоста приложения зарегистрируйте контейнер Oracle и используйте подключение, используя следующие методы:
var builder = DistributedApplication.CreateBuilder(args);
var oracle = builder.AddOracle("oracle");
var oracledb = oracle.AddDatabase("oracledb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(oracledb);
Если вы хотите явно указать пароль, его можно указать в качестве параметра. Рассмотрим следующий альтернативный пример:
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);
Дополнительные сведения см. в разделе Внешние параметры.
Конфигурация
Интеграция .NET AspireOracleEntity Framework Core предоставляет несколько вариантов настройки подключения к базе данных на основе требований и соглашений проекта.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове builder.AddOracleDatabaseDbContext<TContext>()
:
builder.AddOracleDatabaseDbContext<MyDbContext>("myConnection");
Затем строка подключения будет извлечена из раздела конфигурации ConnectionStrings
:
{
"ConnectionStrings": {
"myConnection": "Data Source=TORCL;User Id=myUsername;Password=myPassword;"
}
}
EnrichOracleDatabaseDbContext
не будет использовать раздел конфигурации ConnectionStrings
, так как ожидается, что DbContext
будет зарегистрирован в момент его вызова.
Дополнительные сведения см. в документации ODP.NET.
Использование поставщиков конфигураций
Интеграция .NET AspireOracleEntity Framework Core поддерживает Microsoft.Extensions.Configuration. Он загружает OracleEntityFrameworkCoreSettings
из конфигурации с помощью ключа Aspire:Oracle:EntityFrameworkCore
.
В следующем примере показано appsettings.json, которое настраивает часть доступных параметров:
{
"Aspire": {
"Oracle": {
"EntityFrameworkCore": {
"DisableHealthChecks": true,
"DisableTracing": true,
"DisableMetrics": false,
"DisableRetry": false,
"Timeout": 30
}
}
}
}
Совет
Свойство Timeout
измеряется в секундах. Если задано, как показано в предыдущем примере, время ожидания составляет 30 секунд.
Используйте инлайн-делегаты
Можно также передать делегат Action<OracleEntityFrameworkCoreSettings> configureSettings
для настройки некоторых или всех параметров непосредственно в коде, например, чтобы отключить проверку работоспособности прямо из кода.
builder.AddOracleDatabaseDbContext<MyDbContext>(
"oracle",
static settings => settings.DisableHealthChecks = true);
или
builder.EnrichOracleDatabaseDbContext<MyDbContext>(
static settings => settings.DisableHealthChecks = true);
Проверки состояния
По умолчанию .NET.NET Aspire интеграции включают проверки работоспособности для всех служб. Дополнительные сведения см. в обзоре интеграции .NET.NET Aspire.
Интеграция .NET AspireOracleEntity Framework Core регистрирует базовую проверку работоспособности, которая проверяет подключение к базе данных при условии наличия TContext
. Проверка работоспособности включена по умолчанию и может быть отключена с помощью свойства DisableHealthChecks
в конфигурации.
Наблюдаемость и телеметрия
.NET
.NET Aspire интеграции автоматически настраивают конфигурации журналирования, трассировки и метрик, которые иногда называются столпами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации
Лесозаготовка
Интеграция .NET AspireOracleEntity Framework Core использует следующие категории журналов:
Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
Microsoft.EntityFrameworkCore.Database.Command.CommandError
Отслеживание
Интеграция .NET AspireOracleEntity Framework Core будет выполнять следующие операции трассировки с помощью OpenTelemetry:
- OpenTelemetry. Инструментирование.EntityFrameworkCore
Метрика
В настоящее время интеграция .NET AspireOracleEntity Framework Core поддерживает следующие метрики:
- Microsoft.EntityFrameworkCore
См. также
.NET Aspire