.NET Aspire Microsoft Entity Framework CoreCosmos DB Integration
In diesem Artikel erfahren Sie, wie Sie die .NET Aspire Microsoft Entity Framework CoreCosmos DB-Integration verwenden. Die Aspire.Microsoft.EntityFrameworkCore.Cosmos
-Bibliothek wird verwendet, um eine System.Data.Entity.DbContext als Singleton im DI-Container zu registrieren, damit eine Verbindung mit AzureAzure Cosmos DBhergestellt werden kann. Außerdem ermöglicht es entsprechende Gesundheitschecks, Protokollierung und Telemetrie.
Loslegen
Um mit der .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration zu beginnen, installieren Sie das 📦Aspire.Microsoft.EntityFrameworkCore.Cosmos NuGet-Paket im Projekt, das clientverwendet, also das Projekt der Anwendung, die Microsoft Entity Framework CoreCosmos DBclientverwendet.
dotnet add package Aspire.Microsoft.EntityFrameworkCore.Cosmos
Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Paketabhängigkeiten in .NET-Anwendungen.
Beispielanwendung
Rufen Sie in der Datei Program.cs Ihres client-verbrauchenden Projekts die AddCosmosDbContext-Erweiterung auf, um eine System.Data.Entity.DbContext für den Einsatz über den Container zum Einfügen von Abhängigkeiten zu registrieren.
builder.AddCosmosDbContext<MyDbContext>("cosmosdb");
Anschließend können Sie die DbContext Instanz mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie beispielsweise die client von einem Dienst ab:
public class ExampleService(MyDbContext context)
{
// Use context...
}
Weitere Informationen zur Verwendung von Entity Framework Core mit Azure Cosmos DBfinden Sie in den Beispielen für Azure Cosmos DB des NoSQL SDK für .NET.
Apphost-Verwendung
Um AzureAzure Cosmos DB Hostingunterstützung zu Ihrer IDistributedApplicationBuilderhinzuzufügen, installieren Sie das 📦Aspire.Hosting.Azure.CosmosDB NuGet-Paket im App-Host Projekt.
dotnet add package Aspire.Hosting.Azure.CosmosDB
Registrieren Sie in Ihrem App-Hostprojekt die .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration, und nutzen Sie den Dienst mithilfe der folgenden Methoden:
var builder = DistributedApplication.CreateBuilder(args);
var cosmos = builder.AddAzureCosmosDB("cosmos");
var cosmosdb = cosmos.AddDatabase("cosmosdb");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(cosmosdb);
Trinkgeld
Um den AzureAzure Cosmos DB Emulator zu verwenden, verketten Sie einen Aufruf der AddAzureCosmosDB-Methode.
cosmosdb.RunAsEmulator();
Konfiguration
Die .NET Aspire Microsoft-Entity Framework Core-Cosmos DB-Integration bietet mehrere Optionen zum Konfigurieren der Azure Cosmos DB Verbindung, die an die Anforderungen und Konventionen Ihres Projekts angepasst sind.
Verwenden Sie eine Verbindungszeichenfolge
Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
verwenden, können Sie beim Aufrufen von builder.AddCosmosDbContext
den Namen der Verbindungszeichenfolge angeben:
builder.AddCosmosDbContext<MyDbContext>("CosmosConnection");
Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
abgerufen:
{
"ConnectionStrings": {
"CosmosConnection": "AccountEndpoint=https://{account_name}.documents.azure.com:443/;AccountKey={account_key};"
}
}
Weitere Informationen finden Sie in der ConnectionString-Dokumentation.
Verwenden von Konfigurationsanbietern
Die .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration unterstützt Microsoft.Extensions.Configuration. Es lädt die EntityFrameworkCoreCosmosSettings aus appsettings.json oder anderen Konfigurationsdateien mithilfe des Aspire:Microsoft:EntityFrameworkCore:Cosmos
-Schlüssels. Beispiel appsettings.json, das einige der Optionen konfiguriert:
{
"Aspire": {
"Microsoft": {
"EntityFrameworkCore": {
"Cosmos": {
"DisableTracing": true
}
}
}
}
}
Verwenden von Inlinedelegaten
Sie können auch den Action<EntityFrameworkCoreCosmosSettings> configureSettings
Delegat übergeben, um einige oder alle EntityFrameworkCoreCosmosSettings Optionen inline einzurichten, z. B. um die Ablaufverfolgung aus Code zu deaktivieren:
builder.AddCosmosDbContext<MyDbContext>(
"cosmosdb",
settings => settings.DisableTracing = true);
Gesundheitschecks
Standardmäßig aktivieren .NET.NET Aspire-Integrationen Gesundheitsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.
Die .NET Aspire Microsoft Entity Framework CoreCosmos DB-Integration führt derzeit keine Gesundheitsprüfungen durch, obwohl sich dies in zukünftigen Versionen ändern könnte.
Observability und Telemetrie
.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Tracing- und Metrikkonfigurationen ein, die manchmal als die Säulen der Observabilitybezeichnet werden. Weitere Informationen zur Integrationsobservability und Telemetrie finden Sie unter .NET.NET Aspire Übersicht über Integrationen. Abhängig vom Unterstützungsdienst könnten einige Integrationen nur bestimmte dieser Funktionen unterstützen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Configuration beschrieben werden.
Protokollierung
Die .NET Aspire Microsoft Entity Framework CoreCosmos DB Integration verwendet die folgenden Protokollkategorien:
- Azure-Cosmos-Operation-Request-Diagnostics
- Microsoft.EntityFrameworkCore.ChangeTracking
- Microsoft.EntityFrameworkCore.Database.Command
- Microsoft.EntityFrameworkCore.Infrastructure
- Microsoft.EntityFrameworkCore.Query
Nachverfolgung
Die .NET Aspire Microsoft Entity Framework CoreCosmos DB-Integration gibt mithilfe von OpenTelemetrydie folgenden Protokollierungsaktivitäten aus:
- Azure. Cosmos.Operation
- OpenTelemetry. Instrumentation.EntityFrameworkCore
Metriken
Die .NET Aspire Microsoft Entity Framework CoreCosmos DB -Integration unterstützt derzeit die folgenden Metriken:
- Microsoft.EntityFrameworkCore"
- ec_Microsoft_EntityFrameworkCore_active_db_contexts
- ec_Microsoft_EntityFrameworkCore_gesamt_abfragen
- ec_Microsoft_EntityFrameworkCore_queries_per_second
- ec_Microsoft_EntityFrameworkCore_total_save_changes
- ec_Microsoft_EntityFrameworkCore_save_changes_per_second
- ec_Microsoft_EntityFrameworkCore_compiled_query_cache_hit_rate
- ec_Microsoft_Entity_Gesamtanzahl_Ausführungsstrategie_Betriebsfehler
- ec_Microsoft_E_Ausführungsstrategie_Vorgangsfehler_pro_Sekunde
- ec_Microsoft_EntityFramework_gesamt_optimistische_Konkurrenzfehler
- ec_Microsoft_EntityF_optimistische_Konkurrenzfehler_pro_Sekunde