.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 ドキュメントを参照してください。
構成プロバイダーを使用する
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
関連項目
.NET Aspire