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