.NET Aspire Microsoft Entity Framework CoreCosmos DB 整合
本文介绍如何使用 .NET Aspire 与 Microsoft Entity Framework CoreCosmos DB 的集成。
Aspire.Microsoft.EntityFrameworkCore.Cosmos
库用于在 DI 容器中将 System.Data.Entity.DbContext 注册为单例,以便连接到 AzureAzure Cosmos DB。 它还支持相应的运行状况检查、日志记录和遥测。
入门
若要开始 .NET Aspire Microsoft Entity Framework CoreCosmos DB 集成,请安装 📦Aspire。Microsoft.EntityFrameworkCore.Cosmos 使用 client项目中的 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...
}
有关将
应用主机使用情况
若要将 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);
配置
.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-宇宙行动-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_实体框架核心_总查询数
- ec_Microsoft_EntityFrameworkCore_每秒查询数
- ec_Microsoft_EntityFrameworkCore_total_save_changes
- ec_Microsoft_EntityFrameworkCore_save_changes_per_second(每秒保存更改次数)
- ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
- ec_Microsoft_实体_总执行策略_操作失败
- ec_Microsoft_E_执行策略操作失败次数/秒
- ec_Microsoft_EntityFramew_乐观并发失败总数
- ec_Microsoft_EntityF_每秒乐观并发失败次数