Udostępnij za pośrednictwem


składnik .NET AspireOracle Entity Framework

Z tego artykułu dowiesz się, jak korzystać z integracji z .NET AspireOracleEntity Framework Core. Biblioteka Aspire.Oracle.EntityFrameworkCore służy do rejestrowania System.Data.Entity.DbContext jako singletonu w kontenerze DI do łączenia z bazami danych Oracle. Umożliwia również grupowanie połączeń, ponawianie prób, kontrole kondycji, logowanie i telemetrię.

Rozpocznij

Aby uzyskać dostęp do bazy danych, potrzebujesz bazy danych Oracle oraz parametrów połączenia. Aby rozpocząć pracę nad integracją .NET AspireOracleEntity Framework Core, zainstaluj pakiet NuGet 📦Aspire.Oracle.EntityFrameworkCore w projekcie korzystającym z client.

dotnet add package Aspire.Oracle.EntityFrameworkCore

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w .NET aplikacjach.

Przykładowe użycie

W pliku Program.cs projektu korzystającego z client, wywołaj rozszerzenie AddOracleDatabaseDbContext, aby zarejestrować System.Data.Entity.DbContext do użycia za pośrednictwem kontenera wstrzykiwania zależności.

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

Następnie można pobrać instancję DbContext, korzystając z mechanizmu wstrzykiwania zależności. Aby na przykład pobrać client z usługi:

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

Możesz także potrzebować skonfigurować określone opcje bazy danych Oracle lub zarejestrować DbContext w inny sposób. W takim przypadku wywołaj metodę rozszerzenia EnrichOracleDatabaseDbContext, na przykład:

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

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

builder.EnrichOracleDatabaseDbContext<MyDbContext>();

Użycie hosta aplikacji

Aby modelować zasób Oracleserver w hoście aplikacji, zainstaluj pakiet NuGet 📦Aspire.Hosting.Oracle w projekcie hosta aplikacji .

dotnet add package Aspire.Hosting.Oracle

W projekcie hosta aplikacji zarejestruj kontener Oracle i używaj połączenia za pomocą następujących metod:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Jeśli chcesz jawnie podać hasło, możesz podać je jako parametr. Rozważmy następujący przykład alternatywny:

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

Aby uzyskać więcej informacji, zobacz Parametry zewnętrzne.

Konfiguracja

Integracja .NET AspireOracleEntity Framework Core udostępnia wiele opcji konfigurowania połączenia z bazą danych na podstawie wymagań i konwencji projektu.

Używanie parametrów połączenia

W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings można podać nazwę parametrów połączenia podczas wywoływania builder.AddOracleDatabaseDbContext<TContext>():

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

Następnie parametry połączenia zostaną pobrane z sekcji konfiguracji ConnectionStrings:

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

EnrichOracleDatabaseDbContext nie będzie korzystać z sekcji konfiguracji ConnectionStrings, ponieważ oczekuje ona zarejestrowania DbContext w momencie jego wywołania.

Aby uzyskać więcej informacji, zobacz dokumentację ODP.NET.

Korzystanie z dostawców konfiguracji

Integracja .NET AspireOracleEntity Framework Core obsługuje Microsoft.Extensions.Configuration. Ładuje OracleEntityFrameworkCoreSettings z konfiguracji przy użyciu klucza Aspire:Oracle:EntityFrameworkCore.

W poniższym przykładzie pokazano appsettings.json, które konfiguruje niektóre dostępne opcje.

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

Napiwek

Właściwość Timeout jest wyrażona w sekundach. W przypadku ustawienia, jak pokazano w poprzednim przykładzie, limit czasu wynosi 30 sekund.

Używaj delegatów wbudowanych

Możesz również przekazać delegata Action<OracleEntityFrameworkCoreSettings> configureSettings, aby skonfigurować niektóre lub wszystkie opcje wbudowane, na przykład w celu wyłączenia kontroli kondycji z kodu:

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

lub

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

Kontrole kondycji

Domyślnie .NET.NET Aspire integracje umożliwiają sprawdzanie kondycji dla wszystkich usług. Aby uzyskać więcej informacji, zobacz omówienie integracji .NET.NET Aspire.

Integracja .NET AspireOracleEntity Framework Core rejestruje podstawowe sprawdzenie stanu zdrowia, które sprawdza połączenie z bazą danych za pomocą TContext. Sprawdzanie kondycji jest domyślnie włączone i można je wyłączyć przy użyciu właściwości DisableHealthChecks w konfiguracji.

Obserwowanie i telemetria

.NET .NET Aspire integracje automatycznie ustawiają konfiguracje rejestrowania, śledzenia i metryk, które są czasami nazywane filarami obserwowalności. Aby uzyskać więcej informacji na temat możliwości obserwacji integracji i telemetrii, zobacz omówienie integracji .NET.NET Aspire. W zależności od usługi pomocniczej niektóre integracje mogą obsługiwać tylko niektóre z tych funkcji. Na przykład niektóre integracje obsługują rejestrowanie i śledzenie, ale nie metryki. Funkcje telemetrii można również wyłączyć przy użyciu technik przedstawionych w sekcji konfiguracji .

Wyrąb

Integracja .NET AspireOracleEntity Framework Core używa następujących kategorii dzienników:

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

Śledzenie

Integracja .NET AspireOracleEntity Framework Core spowoduje emitowanie następujących działań śledzenia przy użyciu OpenTelemetry:

  • OpenTelemetry. Instrumentation.EntityFrameworkCore

Metryki

Integracja .NET AspireOracleEntity Framework Core obecnie obsługuje następujące metryki:

  • Microsoft.EntityFrameworkCore

Zobacz też