.NET Aspire Oracle Entity Framework-onderdeel
In dit artikel leert u hoe u de .NET AspireOracleEntity Framework Core-integratie gebruikt. De Aspire.Oracle.EntityFrameworkCore
-bibliotheek wordt gebruikt om een System.Data.Entity.DbContext te registreren als een singleton in de DI-container om verbinding te maken met Oracle databases. Het maakt ook groepsgewijze verbindingen, nieuwe pogingen, statuscontroles, logboekregistratie en telemetrie mogelijk.
Aan de slag
U hebt een Oracle-database en verbindingsreeks nodig voor toegang tot de database. Om aan de slag te gaan met de .NET AspireOracleEntity Framework Core-integratie, installeer het 📦Aspire.Oracle.EntityFrameworkCore NuGet-pakket in het verbruikende client-project.
dotnet add package Aspire.Oracle.EntityFrameworkCore
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 AddOracleDatabaseDbContext-extensie aan om een System.Data.Entity.DbContext te registreren voor gebruik via de container voor afhankelijkheidsinjectie.
builder.AddOracleDatabaseDbContext<MyDbContext>("oracledb");
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...
}
Mogelijk moet u ook specifieke opties voor Oracle database configureren of een DbContext
op andere manieren registreren. In dit geval roept u de EnrichOracleDatabaseDbContext
-extensiemethode aan, bijvoorbeeld:
var connectionString = builder.Configuration.GetConnectionString("oracledb");
builder.Services.AddDbContextPool<MyDbContext>(
dbContextOptionsBuilder => dbContextOptionsBuilder.UseOracle(connectionString));
builder.EnrichOracleDatabaseDbContext<MyDbContext>();
App-hostgebruik
Als u de Oracleserver-resource in de apphost wilt modelleren, installeert u de 📦Aspire.Hosting.Oracle NuGet-pakket in het -apphostproject.
dotnet add package Aspire.Hosting.Oracle
Registreer in uw app-hostproject een Oracle container en gebruik de verbinding met behulp van de volgende methoden:
var builder = DistributedApplication.CreateBuilder(args);
var oracle = builder.AddOracle("oracle");
var oracledb = oracle.AddDatabase("oracledb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(oracledb);
Wanneer u expliciet een wachtwoord wilt opgeven, kunt u dit als parameter opgeven. Bekijk het volgende alternatieve voorbeeld:
var password = builder.AddParameter("password", secret: true);
var oracle = builder.AddOracle("oracle", password);
var oracledb = oracle.AddDatabase("oracledb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(oracledb);
Zie Externe parametersvoor meer informatie.
Configuratie
De .NET AspireOracleEntity Framework Core-integratie biedt meerdere opties voor het configureren van de databaseverbinding 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.AddOracleDatabaseDbContext<TContext>()
:
builder.AddOracleDatabaseDbContext<MyDbContext>("myConnection");
Vervolgens wordt de verbindingsreeks opgehaald uit de sectie ConnectionStrings
configuratie:
{
"ConnectionStrings": {
"myConnection": "Data Source=TORCL;User Id=myUsername;Password=myPassword;"
}
}
De EnrichOracleDatabaseDbContext
maakt geen gebruik van de ConnectionStrings
configuratiesectie, omdat er een DbContext
moet worden geregistreerd op het punt dat deze wordt aangeroepen.
Zie de ODP-documentatie.NETvoor meer informatie.
Configuratieproviders gebruiken
De .NET AspireOracleEntity Framework Core-integratie ondersteunt Microsoft.Extensions.Configuration. Het laadt OracleEntityFrameworkCoreSettings
in vanuit de configuratie met behulp van sleutel Aspire:Oracle:EntityFrameworkCore
.
In het volgende voorbeeld ziet u een appsettings.json waarmee een aantal van de beschikbare opties wordt geconfigureerd:
{
"Aspire": {
"Oracle": {
"EntityFrameworkCore": {
"DisableHealthChecks": true,
"DisableTracing": true,
"DisableMetrics": false,
"DisableRetry": false,
"Timeout": 30
}
}
}
}
Fooi
De eigenschap Timeout
is binnen enkele seconden. Als deze is ingesteld zoals in het vorige voorbeeld, is de time-out 30 seconden.
Inline gedelegeerden gebruiken
U kunt ook de Action<OracleEntityFrameworkCoreSettings> configureSettings
delegate doorgeven om bepaalde of alle opties inline te configureren, bijvoorbeeld om de statuscontroles in code uit te schakelen:
builder.AddOracleDatabaseDbContext<MyDbContext>(
"oracle",
static settings => settings.DisableHealthChecks = true);
of
builder.EnrichOracleDatabaseDbContext<MyDbContext>(
static settings => settings.DisableHealthChecks = true);
Gezondheidscontroles
Standaard kunnen .NET.NET Aspire integraties statuscontroles voor alle services inschakelen. Zie .NET.NET Aspire overzicht van integratiesvoor meer informatie.
De .NET AspireOracleEntity Framework Core-integratie registreert een basisgezondheidscontrole die specifiek de databaseverbinding test met behulp van een TContext
. De statuscontrole is standaard ingeschakeld en kan worden uitgeschakeld met behulp van de eigenschap DisableHealthChecks
in de configuratie.
Waarneembaarheid en telemetrie
.NET .NET Aspire integraties stellen automatisch configuraties in voor logging, tracing en metrics, die ook wel bekend staan als de pijlers van waarneembaarheid. 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.
Loggen
De .NET AspireOracleEntity Framework Core-integratie maakt gebruik van de volgende logboekcategorieën:
Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
Microsoft.EntityFrameworkCore.Database.Command.CommandError
Opsporing
De integratie van .NET AspireOracleEntity Framework Core verzendt de volgende traceringsactiviteiten met behulp van OpenTelemetry:
- OpenTelemetry. Instrumentation.EntityFrameworkCore
Statistieken
De integratie van .NET AspireOracleEntity Framework Core ondersteunt momenteel de volgende metrische gegevens:
- Microsoft.EntityFrameworkCore