次の方法で共有


.NET Aspire Oracle Entity Framework コンポーネント

この記事では、.NET AspireOracleEntity Framework Core 統合を使用する方法について説明します。 Aspire.Oracle.EntityFrameworkCore ライブラリは、System.Data.Entity.DbContext をシングルトンとして DI コンテナーに登録し、Oracle データベースに接続するために使用します。 また、接続プール、再試行、正常性チェック、ログ記録、テレメトリも有効になります。

作業の開始

データベースにアクセスするには、Oracle データベースと接続文字列が必要です。 .NET Aspire Oracle Entity Framework Core 統合を開始するには、使用している client プロジェクトにおいて、📦Aspire.Oracle.EntityFrameworkCore の NuGet パッケージをインストールしてください。

dotnet add package Aspire.Oracle.EntityFrameworkCore

詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

使用例

client-consuming プロジェクトの Program.cs ファイルで、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 Aspire Oracle Entity Framework Core 統合には、プロジェクトの要件と規則に基づいてデータベース接続を構成するための複数のオプションが用意されています。

接続文字列を使用する

ConnectionStrings 構成セクションの接続文字列を使用する場合は、builder.AddOracleDatabaseDbContext<TContext>()を呼び出すときに接続文字列の名前を指定できます。

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

接続文字列は、ConnectionStrings 構成セクションから取得されます。

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

EnrichOracleDatabaseDbContext では、呼び出された時点で DbContext が登録されることを想定しているため、ConnectionStrings 構成セクションは使用されません。

詳細については、ODP.NET ドキュメントを参照してください。

構成プロバイダーを使用する

統合では、Microsoft.Extensions.Configurationがサポートされます。 Aspire:Oracle:EntityFrameworkCore キーを使用して、構成から OracleEntityFrameworkCoreSettings を読み込みます。

次の例は、使用可能なオプションの一部を構成する 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 Aspire Oracle Entity Framework Core 統合では、TContextが指定されているデータベース接続を確認する基本的な正常性チェックを登録します。 正常性チェックは既定で有効になっており、構成の DisableHealthChecks プロパティを使用して無効にすることができます。

可観測性とテレメトリ

統合により、ログ記録、トレース、メトリックの構成が自動的に設定されます。これは、監視の柱 とも呼ばれます。 統合の可観測性とテレメトリの詳細については、統合の概要 参照してください。 バッキング サービスによっては、一部の統合でこれらの機能の一部のみがサポートされる場合があります。 たとえば、一部の統合ではログ記録とトレースがサポートされますが、メトリックはサポートされません。 テレメトリ機能は、「構成」セクションに記載されている手法を使用して無効にすることもできます。

伐採

.NET Aspire Oracle Entity Framework Core 統合では、次のログ カテゴリが使用されます。

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

トレーシング

.NET Aspire Oracle Entity Framework Core 統合では、OpenTelemetryを使用して次のトレース アクティビティが出力されます。

  • OpenTelemetry.Instrumentation.EntityFrameworkCore

メトリック

.NET Aspire Oracle Entity Framework Core 統合では、現在、次のメトリックがサポートされています。

  • Microsoft.EntityFrameworkCore

関連項目