.NET Aspire Microsoft Entity Framework CoreCosmos DB 統合
この記事では、.NET Aspire Microsoft Entity Framework CoreCosmos DB 統合を使用する方法について説明します。
Aspire.Microsoft.EntityFrameworkCore.Cosmos
ライブラリは、AzureAzure Cosmos DBに接続するための DI コンテナーにシングルトンとして System.Data.Entity.DbContext を登録するために使用されます。 また、対応する正常性チェック、ログ記録、テレメトリも有効になります。
作業の開始
.NET Aspire Microsoft Entity Framework CoreCosmos DB 統合を開始するには、📦Aspireをインストールします。Microsoft.EntityFrameworkCore.Cosmos NuGet パッケージは、clientを使用するプロジェクト 、つまり、Microsoft Entity Framework CoreCosmos DBclientを使用するアプリケーションのプロジェクトです。
dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
使用例
client-consuming プロジェクトの Program.cs ファイルで、AddCosmosDbContext 拡張子を呼び出して、依存関係挿入コンテナーを介して使用する System.Data.Entity.DbContext を登録します。
builder.AddCosmosDbContext<MyDbContext>("cosmosdb");
その後、依存関係の挿入を使用して DbContext インスタンスを取得できます。 たとえば、サービスから client を取得するには、次のようにします。
public class ExampleService(MyDbContext context)
{
// Use context...
}
アプリ ホストの使用状況
IDistributedApplicationBuilderにAzureAzure Cosmos DB ホスティング サポートを追加するには、📦Aspireホスティング.Azure.CosmosDB NuGet パッケージを アプリホスト プロジェクトにインストールします。
dotnet add package Aspire.Hosting.Azure.CosmosDB
アプリ ホスト プロジェクトで、Microsoft Entity Framework CoreCosmos DB 統合 .NET Aspire 登録し、次の方法を使用してサービスを使用します。
var builder = DistributedApplication.CreateBuilder(args);
var cosmos = builder.AddAzureCosmosDB("cosmos");
var cosmosdb = cosmos.AddDatabase("cosmosdb");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cosmosdb);
アドバイス
Azure Azure Cosmos DB エミュレーターを使用するには、AddAzureCosmosDB メソッドの呼び出しをチェーンします。
cosmosdb.RunAsEmulator();
構成
.NET Aspire Microsoft Entity Framework CoreCosmos DB 統合には、プロジェクトの要件と規則に基づいて Azure Cosmos DB 接続を構成するための複数のオプションが用意されています。
接続文字列を使用する
ConnectionStrings
構成セクションの接続文字列を使用する場合は、builder.AddCosmosDbContext
を呼び出すときに接続文字列の名前を指定できます。
builder.AddCosmosDbContext<MyDbContext>("CosmosConnection");
接続文字列は、ConnectionStrings
構成セクションから取得されます。
{
"ConnectionStrings": {
"CosmosConnection": "AccountEndpoint=https://{account_name}.documents.azure.com:443/;AccountKey={account_key};"
}
}
詳細については、ConnectionString のドキュメントを参照してください。
構成プロバイダーを使用する
.NET Aspire Microsoft Entity Framework CoreCosmos DB 統合では、Microsoft.Extensions.Configurationがサポートされています。
Aspire:Microsoft:EntityFrameworkCore:Cosmos
キーを使用して、appsettings.json またはその他の構成ファイルから EntityFrameworkCoreCosmosSettings を読み込みます。 いくつかのオプションを構成する appsettings.json の例:
{
"Aspire": {
"Microsoft": {
"EntityFrameworkCore": {
"Cosmos": {
"DisableTracing": true
}
}
}
}
}
インライン デリゲートを使用する
Action<EntityFrameworkCoreCosmosSettings> configureSettings
デリゲートを渡して、コードからのトレースを無効にするなどの EntityFrameworkCoreCosmosSettings オプションの一部またはすべてをインラインで設定することもできます。
builder.AddCosmosDbContext<MyDbContext>(
"cosmosdb",
settings => settings.DisableTracing = true);
健康診断
既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。
Microsoft の .NET AspireEntity Framework CoreCosmos DB 統合は現在、正常性チェックを実装していませんが、将来のリリースでは変更される可能性があります。
可観測性とテレメトリ
伐採
Microsoft .NET Aspire 統合では、Entity Framework CoreCosmos DB の次のログカテゴリが使用されます。
- Azure-コスモス-オペレーション-Request-Diagnostics
- Microsoft.EntityFrameworkCore.ChangeTracking
- Microsoft.EntityFrameworkCore.Database.Command
- Microsoft.EntityFrameworkCore.Infrastructure
- Microsoft.EntityFrameworkCore.Query
トレーシング
.NET Aspire Microsoft Entity Framework CoreCosmos DB 統合では、OpenTelemetryを使用して次のトレース アクティビティが出力されます。
- Azure.Cosmos.Operation
- OpenTelemetry.Instrumentation.EntityFrameworkCore
メトリック
.NET Aspire Microsoft Entity Framework CoreCosmos DB 統合では、現在、次のメトリックがサポートされています。
- Microsoft.EntityFrameworkCore"
- ec_Microsoft_EntityFrameworkCore_active_db_contexts
- ec_Microsoft_EntityFrameworkCore_total_queries
- ec_Microsoft_EntityFrameworkCore_queries_per_second
- ec_Microsoft_EntityFrameworkCore_total_save_changes
- ec_Microsoft_EntityFrameworkCore_save_changes_per_second
- ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
- ec_Microsoft_Entity_total_execution_strategy_operation_failures
- ec_Microsoft_E_実行戦略_操作失敗_毎秒
- ec_Microsoft_EntityFramew_total_optimistic_concurrency_failures
- ec_Microsoft_EntityF_楽観的同時実行制御失敗回数_毎秒
関連情報をご覧ください
.NET Aspire