Sdílet prostřednictvím


.NET Aspire Microsoft Entity Framework CoreCosmos DB integrace

V tomto článku se dozvíte, jak používat integraci .NET Aspire Microsoft Entity Framework CoreCosmos DB. Knihovna Aspire.Microsoft.EntityFrameworkCore.Cosmos slouží k registraci System.Data.Entity.DbContext jako jediného System.Data.Entity.DbContext v kontejneru DI pro připojení k AzureAzure Cosmos DB. Umožňuje také odpovídající kontroly stavu, protokolování a telemetrii.

Začít

Pokud chcete začít s integrací .NET Aspire Microsoft Entity Framework CoreCosmos DB, nainstalujte 📦Aspire.Microsoft.EntityFrameworkCore.Cosmos balíček NuGet v projektu client, tj. projekt pro aplikaci, která používá Microsoft Entity Framework CoreCosmos DBclient.

dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos

Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v .NET aplikacích.

Příklad využití

V souboru Program.cs projektu, který využívá client, zavolejte rozšíření AddCosmosDbContext a zaregistrujte System.Data.Entity.DbContext pro použití prostřednictvím kontejneru injektáže závislostí.

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

Potom můžete načíst instanci DbContext pomocí injektáže závislostí. Pokud chcete například načíst client ze služby:

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

Další informace o použití Entity Framework Core s Azure Cosmos DBnaleznete v tématu Příklady pro Azure Cosmos DB pro sadu NoSQL SDK pro .NET.

Využití hostitele aplikace

Pokud chcete do IDistributedApplicationBuilderpřidat podporu hostování AzureAzure Cosmos DB, nainstalujte balíček NuGet 📦Aspire.Hosting.Azure.CosmosDB v projektu hostování aplikace .

dotnet add package Aspire.Hosting.Azure.CosmosDB

V hostitelském projektu aplikace zaregistrujte integraci .NET Aspire Microsoft Entity Framework CoreCosmos DB a pomocí následujících metod službu využijte:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Spropitné

Pokud chcete použít emulátor AzureAzure Cosmos DB, zřetězte volání metody AddAzureCosmosDB.

cosmosdb.RunAsEmulator();

Konfigurace

Integrace .NET Aspire Microsoft Entity Framework CoreCosmos DB poskytuje několik možností konfigurace připojení Azure Cosmos DB na základě požadavků a konvencí projektu.

Použijte připojovací řetězec

Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings můžete při volání builder.AddCosmosDbContextzadat název připojovacího řetězce:

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

A potom se připojovací řetězec načte z oddílu konfigurace ConnectionStrings.

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

Další informace naleznete v dokumentaci ConnectionString.

Použití zprostředkovatelů konfigurace

Integrace .NET Aspire Microsoft Entity Framework CoreCosmos DB podporuje Microsoft.Extensions.Configuration. Načte EntityFrameworkCoreCosmosSettings z appsettings.json nebo jiných konfiguračních souborů pomocí klíče Aspire:Microsoft:EntityFrameworkCore:Cosmos. Příklad appsettings.json, který konfiguruje některé z možností:

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

Použití vložených delegátů

Můžete také předat delegáta Action<EntityFrameworkCoreCosmosSettings> configureSettings a nastavit některé nebo všechny možnosti EntityFrameworkCoreCosmosSettings přímo, například zakázat sledování z kódu.

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

Kontroly stavu

Integrace .NET.NET Aspire ve výchozím nastavení umožňují kontroly stavu pro všechny služby. Pro více informací viz .NET.NET Aspire přehled integrací.

Integrace .NET Aspire Microsoft Entity Framework CoreCosmos DB v současné době neimplementuje kontroly stavu, i když se to může v budoucích verzích změnit.

Pozorovatelnost a telemetrie

.NET .NET Aspire integrace automaticky nastaví konfigurace pro protokolování, trasování a metriky, které se někdy označují jako pilíře pozorovatelnosti. Další informace o pozorovatelnosti a telemetrii integrace najdete v přehledu integrace .NET.NET Aspire. V závislosti na zálohovací službě můžou některé integrace podporovat pouze některé z těchto funkcí. Například některé integrace podporují protokolování a trasování, ale ne metriky. Funkce telemetrie je také možné zakázat pomocí technik uvedených v části Konfigurace.

Protokolování

Integrace .NET Aspire Microsoft Entity Framework CoreCosmos DB používá následující kategorie protokolů:

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

Trasování

Integrace .NET Aspire Microsoft Entity Framework CoreCosmos DB bude generovat následující aktivity trasování pomocí OpenTelemetry:

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

Metriky

Integrace .NET Aspire Microsoft Entity Framework CoreCosmos DB v současné době podporuje následující metriky:

  • Microsoft.EntityFrameworkCore
    • ec_Microsoft_EntityFrameworkCore_active_db_contexts
    • ec_Microsoft_EntityFrameworkCore_celkový_počet_dotazů
    • ec_Microsoft_EntityFrameworkCore_dotazy_za_sekundu
    • ec_Microsoft_EntityFrameworkCore_total_save_changes
    • ec_Microsoft_EntityFrameworkCore_save_changes_per_second
    • ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
    • chyba_operace_strategie_celkové_exekuce_entita_Microsoft
    • ec_Microsoft_E_strategie_provedeni_selhani_operaci_za_sekundu
    • ec_Microsoft_EntityFramew_total_optimistic_concurrency_failures
    • ec_Microsoft_EntityF_pořadí_neshod_sekvence_za_sekundu

Viz také