Dela via


.NET Aspire Microsoft Entity Framework CoreCosmos DB-integrering

I den här artikeln får du lära dig hur du använder .NET Aspire Microsoft Entity Framework CoreCosmos DB-integrering. Aspire.Microsoft.EntityFrameworkCore.Cosmos-biblioteket används för att registrera en System.Data.Entity.DbContext som en singleton i DI-containern för att ansluta till AzureAzure Cosmos DB. Det möjliggör även motsvarande hälsokontroller, loggning och telemetri.

Sätta igång

Kom igång med .NET Aspire Microsoft Entity Framework CoreCosmos DB-integrering genom att installera 📦Aspire.Microsoft.EntityFrameworkCore.Cosmos NuGet-paketet i projektet som använder client, dvs. projektet för programmet som använder Microsoft Entity Framework CoreCosmos DBclient.

dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos

Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.

Exempel på användning

I Program.cs-filen för projektet som förbrukar clientanropar du AddCosmosDbContext-tillägget för att registrera en System.Data.Entity.DbContext för användning via containern för beroendeinjektion.

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

Du kan sedan hämta DbContext-instansen med hjälp av beroendeinjektion. Om du till exempel vill hämta client från en tjänst:

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

Mer information om hur du använder Entity Framework Core med Azure Cosmos DBfinns i Exempel för Azure Cosmos DB för NoSQL SDK för .NET.

Appvärdanvändning

Om du vill lägga till AzureAzure Cosmos DB värdstöd för din IDistributedApplicationBuilder, installerar du 📦Aspire.Hosting.Azure.CosmosDB NuGet-paket i app-värdprojektet.

dotnet add package Aspire.Hosting.Azure.CosmosDB

I ditt apphost-projekt registrerar du .NET Aspire-integrationen för Microsoft Entity Framework CoreCosmos DB och konsumerar tjänsten med hjälp av följande metoder:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Tips

Om du vill använda AzureAzure Cosmos DB-emulatorn kedjar du ett anrop till metoden AddAzureCosmosDB.

cosmosdb.RunAsEmulator();

Konfiguration

Integreringen .NET Aspire Microsoft Entity Framework CoreCosmos DB innehåller flera alternativ för att konfigurera Azure Cosmos DB-anslutningen baserat på kraven och konventionerna i ditt projekt.

Använda en anslutningssträng

När du använder en anslutningssträng från ConnectionStrings konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar builder.AddCosmosDbContext:

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

Och sedan hämtas anslutningssträngen från ConnectionStrings-konfigurationsavsnittet:

{
  "ConnectionStrings": {
    "CosmosConnection": "AccountEndpoint=https://{account_name}.documents.azure.com:443/;AccountKey={account_key};"
  }
}

Mer information finns i dokumentationen ConnectionString.

Använda konfigurationsprovidrar

Integrationen .NET Aspire mellan Microsoft Entity Framework CoreCosmos DB stöder Microsoft.Extensions.Configuration. Den läser in EntityFrameworkCoreCosmosSettings från appsettings.json eller andra konfigurationsfiler med hjälp av Aspire:Microsoft:EntityFrameworkCore:Cosmos nyckel. Exempel appsettings.json som konfigurerar några av alternativen:

{
  "Aspire": {
    "Microsoft": {
      "EntityFrameworkCore": {
        "Cosmos": {
          "DisableTracing": true
        }
      }
    }
  }
}

Använda infogade ombud

Du kan också använda Action<EntityFrameworkCoreCosmosSettings> configureSettings delegat för att konfigurera vissa eller alla EntityFrameworkCoreCosmosSettings alternativ inline, till exempel för att inaktivera spårning i koden.

builder.AddCosmosDbContext<MyDbContext>(
    "cosmosdb",
    settings => settings.DisableTracing = true);

Hälsokontroller

Som standard aktiverar .NET.NET Aspire integreringar hälsokontroller för alla tjänster. Mer information finns i översikten över .NET.NET Aspire integreringar.

.NET Aspire Microsoft Entity Framework CoreCosmos DB integrering implementerar för närvarande inte hälsokontroller, även om detta kan ändras i framtida versioner.

Observerbarhet och telemetri

.NET .NET Aspire integreringar konfigurerar automatiskt konfigurationer för loggning, spårning och mått, som ibland kallas grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i översikten över .NET.NET Aspire integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Configuration.

Skogsavverkning

Integreringen .NET Aspire Microsoft Entity Framework CoreCosmos DB använder följande loggkategorier:

  • Azure–Cosmos-Operation –Request-Diagnostics
  • Microsoft.EntityFrameworkCore.ChangeTracking
  • Microsoft.EntityFrameworkCore.Database.Command
  • Microsoft.EntityFrameworkCore.Infrastructure
  • Microsoft.EntityFrameworkCore.Query

Spårning

Integreringen .NET Aspire Microsoft Entity Framework CoreCosmos DB genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:

  • Azure. Cosmos.Operation
  • OpenTelemetry. Instrumentation.EntityFrameworkCore

Mätvärden

Integreringen .NET Aspire Microsoft Entity Framework CoreCosmos DB stöder för närvarande följande mått:

  • Microsoft.EntityFrameworkCore"
    • ec_Microsoft_EntityFrameworkCore_active_db_contexts
    • ec_Microsoft_EntityFrameworkCore_total_queries
    • ec_Microsoft_EntityFrameworkCore_förfrågningar_per_sekund
    • ec_Microsoft_EntityFrameworkCore_total_save_changes
    • ec_Microsoft_EntityFrameworkCore_save_changes_per_second
    • ec_Microsoft_EntityFrameworkCore_kombinerad_förfrågningscache_träff_frekvens
    • ec_Microsoft_Entity_totala_exekveringsstrategi_operationsfel
    • ec_Microsoft_E_körningsstrategi_operation_misslyckanden_per_sekund
    • ec_Microsoft_EntityFramew_totala_optimistiska_samtidighetsfel
    • ec_Microsoft_EntityF_optimistisk_konflikt_fel_per_sekund

Se även