Поделиться через


интеграция .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_оптимистичные_отказы_к_наклонению_за_секунду

См. также