интеграция .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, установите 📦Aspire. Microsoft.EntityFrameworkCore.Cosmos пакет NuGet в client-потребляющий проект, т. е. проект для приложения, использующего Microsoft Entity Framework CoreCosmos DBclient.
dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos
Дополнительную информацию см. в dotnet add package или Manage package dependencies in .NET applications.
Пример использования
В файле Program.cs вашего проекта, использующего client, вызовите расширение AddCosmosDbContext, чтобы зарегистрировать System.Data.Entity.DbContext для использования через контейнер внедрения зависимостей.
builder.AddCosmosDbContext<MyDbContext>("cosmosdb");
Затем можно получить экземпляр DbContext с помощью инъекции зависимости. Например, чтобы получить client из сервиса:
public class ExampleService(MyDbContext context)
{
// Use context...
}
Дополнительные сведения об использовании Entity Framework Core с Azure Cosmos DBсм. в примерах для Azure Cosmos DB NoSQL SDK для .NET.
Использование хоста приложения
Чтобы добавить поддержку размещения AzureAzure Cosmos DB в IDistributedApplicationBuilder, установите пакет NuGet 📦Aspire.Hosting.Azure.CosmosDB в проекте узла приложения .
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. Он загружает EntityFrameworkCoreCosmosSettings из appsettings.json или других файлов конфигурации с помощью ключа Aspire:Microsoft:EntityFrameworkCore:Cosmos
. Пример 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. Инструментарий.EntityFrameworkCore
Метрика
Интеграция .NET Aspire Microsoft Entity Framework CoreCosmos DB в настоящее время поддерживает следующие метрики:
- Microsoft.EntityFrameworkCore"
- эц_Майкрософт_ЭнтитиФреймворкКор_активные_БД_контексты
- ec_Microsoft_EntityFrameworkCore_общее_количество_запросов
- ec_Microsoft_EntityFrameworkCore_запросов_в_секунду
- ec_Microsoft_EntityFrameworkCore_total_save_changes
- ec_Microsoft_EntityFrameworkCore_сохранение_изменений_в_секунду
- ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
- ec_Microsoft_Entity_total_execution_strategy_operation_failures
- ec_Microsoft_E_execution_strategy_operation_failures_per_second
- Подсчёт общего количества сбоев оптимистичной конкурентности в Microsoft Entity Framework
- ec_Microsoft_EntityF_оптимистичные_отказы_к_наклонению_за_секунду
См. также
.NET Aspire