Sdílet prostřednictvím


Komponenta Entity Framework .NET AspireOracle

V tomto článku se dozvíte, jak používat integraci .NET AspireOracleEntity Framework Core. Knihovna Aspire.Oracle.EntityFrameworkCore se používá pro registraci System.Data.Entity.DbContext jako singleton v DI kontejneru pro připojení k Oracle databázím. Umožňuje také sdružování připojení, opakování, kontroly stavu, protokolování a telemetrii.

Začít

Pro přístup k databázi potřebujete Oracle databázi a připojovací řetězec. Pokud chcete začít s integrací .NET AspireOracleEntity Framework Core, nainstalujte 📦Aspire.Oracle. EntityFrameworkCore balíček NuGet v náročném projektu client.

dotnet add package Aspire.Oracle.EntityFrameworkCore

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

Příklad využití

V souboru Program.cs vašeho projektu využívajícího clientzavolejte rozšíření AddOracleDatabaseDbContext a zaregistrujte System.Data.Entity.DbContext pro použití prostřednictvím kontejneru vkládání závislostí.

builder.AddOracleDatabaseDbContext<MyDbContext>("oracledb");

Potom můžete načíst instanci DbContext pomocí dependency injection. Pokud chcete například načíst client ze služby:

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

Možná budete také muset nakonfigurovat konkrétní možnosti Oracle databáze nebo zaregistrovat DbContext jinými způsoby. V tomto případě volejte metodu rozšíření EnrichOracleDatabaseDbContext, například:

var connectionString = builder.Configuration.GetConnectionString("oracledb");

builder.Services.AddDbContextPool<MyDbContext>(
    dbContextOptionsBuilder => dbContextOptionsBuilder.UseOracle(connectionString));

builder.EnrichOracleDatabaseDbContext<MyDbContext>();

Využití hostitele aplikace

Pokud chcete modelovat prostředek Oracleserver v hostiteli aplikace, nainstalujte NuGet balíček 📦Aspire.Hosting.Oracle v projektu hostitele aplikace .

dotnet add package Aspire.Hosting.Oracle

V projektu hostitele aplikace zaregistrujte kontejner Oracle a pomocí následujících metod využijte připojení:

var builder = DistributedApplication.CreateBuilder(args);

var oracle = builder.AddOracle("oracle");
var oracledb = oracle.AddDatabase("oracledb");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(oracledb);

Pokud chcete explicitně zadat heslo, můžete ho zadat jako parametr. Podívejte se na následující alternativní příklad:

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);

Další informace naleznete v tématu Externí parametry.

Konfigurace

Integrace .NET AspireOracleEntity Framework Core poskytuje několik možností konfigurace připojení k databázi 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.AddOracleDatabaseDbContext<TContext>()zadat název připojovacího řetězce:

builder.AddOracleDatabaseDbContext<MyDbContext>("myConnection");

A poté bude připojovací řetězec načten z konfigurační sekce ConnectionStrings.

{
  "ConnectionStrings": {
    "myConnection": "Data Source=TORCL;User Id=myUsername;Password=myPassword;"
  }
}

EnrichOracleDatabaseDbContext nevyužije konfigurační oddíl ConnectionStrings, protože očekává, že DbContext bude registrován v okamžiku, kdy se volá.

Další informace naleznete vODP dokumentaci .

Použití zprostředkovatelů konfigurace

Integrace .NET AspireOracleEntity Framework Core podporuje microsoft.Extensions.Configuration. Načte OracleEntityFrameworkCoreSettings z konfigurace pomocí klíče Aspire:Oracle:EntityFrameworkCore.

Následující příklad ukazuje appsettings.json, který konfiguruje některé z dostupných možností:

{
  "Aspire": {
    "Oracle": {
      "EntityFrameworkCore": {
        "DisableHealthChecks": true,
        "DisableTracing": true,
        "DisableMetrics": false,
        "DisableRetry": false,
        "Timeout": 30
      }
    }
  }
}

Rada

Vlastnost Timeout je v sekundách. Pokud je nastavený jako v předchozím příkladu, časový limit je 30 sekund.

Používejte vložené delegáty

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

builder.AddOracleDatabaseDbContext<MyDbContext>(
    "oracle",
    static settings => settings.DisableHealthChecks  = true);

nebo

builder.EnrichOracleDatabaseDbContext<MyDbContext>(
    static settings => settings.DisableHealthChecks  = true);

Kontroly stavu

Ve výchozím nastavení integrace .NET.NET Aspire aktivují kontroly stavu pro všechny služby. Další informace naleznete v přehledu integrací .NET.NET Aspire.

Integrace .NET AspireOracleEntity Framework Core registruje základní kontrolu stavu, která kontroluje připojení k databázi s ohledem na TContext. Kontrola stavu je ve výchozím nastavení povolená a lze ji zakázat pomocí vlastnosti DisableHealthChecks v konfiguraci.

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 AspireOracleEntity Framework Core používá následující kategorie protokolů:

  • Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
  • Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
  • Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
  • Microsoft.EntityFrameworkCore.Database.Command.CommandError

Trasování

Integrace .NET AspireOracleEntity Framework Core pomocí OpenTelemetryvygeneruje následující aktivity trasování:

  • OpenTelemetry. Instrumentation.EntityFrameworkCore

Metriky

Integrace .NET AspireOracleEntity Framework Core aktuálně podporuje následující metriky:

  • Microsoft.EntityFrameworkCore

Viz také