Delen via


.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

Zie ook