共用方式為


.NET Aspire Microsoft Entity Framework CoreCosmos DB 整合

在本文中,您將瞭解如何使用 .NET Aspire Microsoft Entity Framework CoreCosmos DB 集成。 Aspire.Microsoft.EntityFrameworkCore.Cosmos 函式庫用於將 System.Data.Entity.DbContext 註冊為 DI 容器中的單一實例,以連接到 AzureAzure Cosmos DB。 它也會啟用對應的健康檢查、日誌和遙測。

開始使用

若要開始使用 .NET Aspire Microsoft Entity Framework CoreCosmos DB 整合,請在使用 client的專案中安裝 📦AspireMicrosoft.EntityFrameworkCore.Cosmos NuGet 套件,也就是使用 Microsoft Entity Framework CoreCosmos DBclient的專案。

dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos

如需詳細資訊,請參閱 dotnet add package管理 .NET 應用程式中的套件相依性

範例使用方式

在 client取用專案的 Program.cs 檔案中,呼叫 AddCosmosDbContext 擴展名,以註冊 System.Data.Entity.DbContext,以透過相依性插入容器使用。

builder.AddCosmosDbContext<MyDbContext>("cosmosdb");

接著,您可以使用依賴注入來擷取 DbContext 實例。 例如,若要從服務中擷取 client:

public class ExampleService(MyDbContext context)
{
    // Use context...
}

如需有關 搭配 的詳細資訊,請參閱適用於 的 NoSQL SDK 的 中的 範例。

應用程式主機使用方式

若要將 AzureAzure Cosmos DB 託管支援新增至您的 IDistributedApplicationBuilder,請在 應用程式主機 專案中安裝 📦Aspire.Hosting.Azure.CosmosDB. NuGet 套件。

dotnet add package Aspire.Hosting.Azure.CosmosDB

在應用程式主機專案中,註冊 .NET Aspire Microsoft Entity Framework CoreCosmos DB 整合,並使用下列方法取用服務:

var builder = DistributedApplication.CreateBuilder(args);

var cosmos = builder.AddAzureCosmosDB("cosmos");
var cosmosdb = cosmos.AddDatabase("cosmosdb");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(cosmosdb);

提示

若要使用 AzureAzure 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 整合概觀

.NET Aspire Microsoft Entity Framework CoreCosmos DB 整合目前不會實作健康情況檢查,不過未來版本可能會變更。

可檢視性和遙測

.NET .NET Aspire 整合會自動設定日誌、追蹤和度量設定,有時被稱為 可觀察性的支柱。 如需整合可觀察性和遙測的詳細資訊,請參閱 .NET.NET Aspire 整合概觀。 視支援服務而定,某些整合可能只支援其中一些功能。 例如,某些整合支援記錄和追蹤,但不支援計量。 您也可以使用 組態 一節中呈現的技術來停用遙測功能。

伐木

.NET Aspire Microsoft Entity Framework CoreCosmos DB 整合中使用下列記錄類別:

  • Azure-Cosmos-Operation-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
  • OpenTelemetryInstrumentation.EntityFrameworkCore

指標

.NET Aspire Microsoft Entity Framework CoreCosmos DB 整合目前支援下列指標:

  • Microsoft.EntityFrameworkCore”
    • ec_Microsoft_EntityFrameworkCore_active_db_contexts
    • ec_Microsoft_EntityFrameworkCore_total_queries
    • ec_Microsoft_EntityFrameworkCore_每秒查詢數
    • ec_Microsoft_EntityFrameworkCore_total_save_changes
    • ec_Microsoft_EntityFrameworkCore_save_changes_per_second
    • ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
    • Microsoft_實體_總執行策略_操作失敗
    • ec_Microsoft_E_execution_strategy_operation_failures_per_second
    • ec_Microsoft_EntityFramew_總計樂觀併發失敗
    • ec_Microsoft_EntityF_每秒樂觀鎖衝突次數

另請參閱