Delen via


Integratie van Microsoft Entity Framework CoreCosmos DB.NET Aspire

In dit artikel leert u hoe u de integratie van .NET Aspire Microsoft Entity Framework CoreCosmos DB kunt gebruiken. De Aspire.Microsoft.EntityFrameworkCore.Cosmos-bibliotheek wordt gebruikt om een System.Data.Entity.DbContext te registreren als een singleton in de DI-container om verbinding te maken met AzureAzure Cosmos DB. Het maakt ook bijbehorende statuscontroles, logboekregistratie en telemetrie mogelijk.

Aan de slag

Installeer het 📦Aspire.Microsoft.EntityFrameworkCore.Cosmos NuGet-pakket om aan de slag te gaan met de .NET Aspire Microsoft Entity Framework CoreCosmos DB-integratie in het clientafnemende project, d.w.z. het project voor de toepassing die gebruikmaakt van de Microsoft Entity Framework CoreCosmos DBclient.

dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Voorbeeld van gebruik

Roep in het Program.cs-bestand van uw clientverbruikende project de AddCosmosDbContext-extensie aan om een System.Data.Entity.DbContext te registreren voor gebruik via de container voor afhankelijkheidsinjectie.

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

Vervolgens kunt u het DbContext exemplaar ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld de client wilt ophalen uit een service:

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

Zie voor meer informatie over het gebruik van Entity Framework Core met Azure Cosmos DBde Voorbeelden voor Azure Cosmos DB voor NoSQL SDK voor .NET.

App-hostgebruik

Als u AzureAzure Cosmos DB hosting-ondersteuning wilt toevoegen aan uw IDistributedApplicationBuilder, installeert u de 📦Aspire.Hosting.Azure.CosmosDB NuGet-pakket in het -app-host project.

dotnet add package Aspire.Hosting.Azure.CosmosDB

Registreer in uw app-hostproject de .NET Aspire Microsoft Entity Framework CoreCosmos DB-integratie en gebruik de service met behulp van de volgende methoden:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Fooi

Als u de AzureAzure Cosmos DB emulator wilt gebruiken, koppelt u een aanroep aan de AddAzureCosmosDB methode.

cosmosdb.RunAsEmulator();

Configuratie

De .NET Aspire Integratie van Microsoft Entity Framework CoreCosmos DB biedt meerdere opties voor het configureren van de Azure Cosmos DB verbinding op basis van de vereisten en conventies van uw project.

Een verbindingsreeks gebruiken

Wanneer u een verbindingsreeks uit de sectie ConnectionStrings configuratie gebruikt, kunt u de naam van de verbindingsreeks opgeven bij het aanroepen van builder.AddCosmosDbContext:

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

Vervolgens wordt de verbindingsreeks opgehaald uit de sectie ConnectionStrings configuratie:

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

Zie de ConnectionString-documentatievoor meer informatie.

Configuratieproviders gebruiken

De integratie van .NET Aspire Microsoft Entity Framework CoreCosmos DB ondersteunt Microsoft.Extensions.Configuration. Het laadt de EntityFrameworkCoreCosmosSettings uit appsettings.json of andere configuratiebestanden met behulp van Aspire:Microsoft:EntityFrameworkCore:Cosmos sleutel. Voorbeeld appsettings.json waarmee een aantal van de opties wordt geconfigureerd:

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

Inline delegates gebruiken

U kunt ook de Action<EntityFrameworkCoreCosmosSettings> configureSettings delegate doorgeven om sommige of alle EntityFrameworkCoreCosmosSettings opties inline in te stellen, bijvoorbeeld om het traceren vanuit de code uit te schakelen.

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

Gezondheidscontroles

Standaard kunnen .NET.NET Aspire integraties statuscontroles voor alle services inschakelen. Zie .NET.NET Aspire overzicht van integratiesvoor meer informatie.

De integratie van .NET Aspire Microsoft Entity Framework CoreCosmos DB implementeert momenteel geen statuscontroles, maar dit kan in toekomstige releases veranderen.

Waarneembaarheid en telemetrie

.NET .NET Aspire integraties stellen automatisch de configuraties in voor logging, tracing en metrics, die soms ook wel bekend staan als de pijlers van observability. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.

Logboekregistratie

De integratie van .NET Aspire Microsoft Entity Framework CoreCosmos DB maakt gebruik van de volgende logboekcategorieën:

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

Opvolging

De integratie van .NET Aspire Microsoft Entity Framework CoreCosmos DB verzendt de volgende traceringsactiviteiten met behulp van OpenTelemetry:

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

Statistieken

De .NET Aspire Integratie van Microsoft Entity Framework CoreCosmos DB ondersteunt momenteel de volgende metrische gegevens:

  • Microsoft.EntityFrameworkCore"
    • ec_Microsoft_EntityFrameworkCore_active_db_contexts
    • ec_Microsoft_EntityFrameworkCore_total_queries
    • ec_Microsoft_EntityFrameworkCore_queries_per_seconde
    • ec_Microsoft_EntityFrameworkCore_total_save_changes
    • ec_Microsoft_EntityFrameworkCore_save_changes_per_second
    • ec_Microsoft_EntityFrameworkCore_gecompileerde_querycache_hitratio
    • ec_Microsoft_Entiteit_totale_uitvoeringsstrategie_operationele_storingen
    • ec_Microsoft_E_uitvoeringsstrategie_operatiefouten_per_seconde
    • ec_Microsoft_EntityFramew_total_optimistic_concurrency_failures
    • ec_Microsoft_EntityF_optimistische_samenloopfouten_per_seconde

Zie ook