Поделиться через


компонент 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

См. также