Partager via


.NET Aspire Oracle Composant de Entity Framework

Dans cet article, vous allez apprendre à utiliser l’intégration .NET AspireOracleEntity Framework Core. La bibliothèque Aspire.Oracle.EntityFrameworkCore est utilisée pour inscrire un System.Data.Entity.DbContext en tant que singleton dans le conteneur d’adresses diiques pour la connexion à des bases de données Oracle. Il permet également le regroupement de connexions, les reprises, les vérifications d’intégrité, l'enregistrement et la télémétrie.

Démarrer

Vous avez besoin d’une Oracle base de données et d’une chaîne de connexion pour accéder à la base de données. Pour commencer à utiliser l’intégration .NET AspireOracleEntity Framework Core, installez le package NuGet 📦Aspire.Oracle.EntityFrameworkCore dans le projet utilisant client.

dotnet add package Aspire.Oracle.EntityFrameworkCore

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances des packages dans les applications .NET.

Exemple d’utilisation

Dans le fichier Program.cs de votre projet consommant client, appelez l'extension AddOracleDatabaseDbContext pour inscrire un System.Data.Entity.DbContext à utiliser via le conteneur d'injection de dépendances.

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

Vous pouvez ensuite récupérer l’instance DbContext à l’aide de l’injection de dépendances. Par exemple, pour récupérer le client à partir d’un service :

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

Vous devrez peut-être également configurer des options spécifiques de Oracle base de données, ou inscrire un DbContext de différentes façons. Dans ce cas, appelez la méthode d’extension EnrichOracleDatabaseDbContext, par exemple :

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

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

builder.EnrichOracleDatabaseDbContext<MyDbContext>();

Utilisation de l’hôte d’application

Pour modéliser la ressource Oracleserver dans l’hôte de l’application, installez le package NuGet 📦Aspire.Hosting.Oracle dans le projet hôte de l’application .

dotnet add package Aspire.Hosting.Oracle

Dans votre projet hôte d’application, enregistrez un conteneur Oracle et utilisez la connexion à l’aide des méthodes suivantes :

var builder = DistributedApplication.CreateBuilder(args);

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

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

Lorsque vous souhaitez fournir explicitement un mot de passe, vous pouvez le fournir en tant que paramètre. Prenons l’exemple de remplacement suivant :

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

Pour plus d’informations, consultez paramètres externes.

Paramétrage

L’intégration .NET AspireOracleEntity Framework Core fournit plusieurs options pour configurer la connexion de base de données en fonction des exigences et des conventions de votre projet.

Utiliser une chaîne de connexion

Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings, vous pouvez fournir le nom de la chaîne de connexion lors de l’appel de builder.AddOracleDatabaseDbContext<TContext>():

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

Ensuite, la chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings :

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

L'EnrichOracleDatabaseDbContext n’utilisera pas la section de configuration ConnectionStrings, car elle s’attend à ce qu’un DbContext soit inscrit au moment où il est appelé.

Pour plus d’informations, consultez la documentation ODP.NET.

Utiliser des fournisseurs de configuration

L'intégration .NET AspireOracleEntity Framework Core prend en charge Microsoft.Extensions.Configuration. Il charge OracleEntityFrameworkCoreSettings depuis la configuration en utilisant la clé Aspire:Oracle:EntityFrameworkCore.

L’exemple suivant montre une appsettings.json qui configure certaines des options disponibles :

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

Pourboire

La propriété Timeout est en secondes. Lorsqu’il est défini comme indiqué dans l’exemple précédent, le délai d’expiration est de 30 secondes.

Utiliser des délégués en ligne

Vous pouvez également transmettre le délégué Action<OracleEntityFrameworkCoreSettings> configureSettings pour configurer certaines ou toutes les options en ligne, par exemple pour désactiver les vérifications de santé à partir du code :

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

ou

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

Vérifications d’intégrité

Par défaut, les intégrations .NET.NET Aspire permettent les contrôles de santé pour tous les services. Pour plus d’informations, consultez .NET.NET Aspire vue d’ensemble des intégrations.

L'intégration .NET AspireOracleEntity Framework Core enregistre un contrôle de santé de base qui vérifie la connexion à la base de données en fonction d'un TContext. La vérification d’intégrité est activée par défaut et peut être désactivée à l’aide de la propriété DisableHealthChecks dans la configuration.

Observabilité et télémétrie

.NET .NET Aspire intégrations configurent automatiquement les configurations de journalisation, de suivi et de métriques, parfois appelées les piliers de l’observabilité. Pour plus d’informations sur l’observabilité de l’intégration et la télémétrie, consultez .NET.NET Aspire vue d’ensemble des intégrations. Selon le service de stockage, certaines intégrations peuvent uniquement prendre en charge certaines de ces fonctionnalités. Par exemple, certaines intégrations prennent en charge la journalisation et le suivi, mais pas les métriques. Les fonctionnalités de télémétrie peuvent également être désactivées à l’aide des techniques présentées dans la section Configuration.

Exploitation forestière

L’intégration .NET AspireOracleEntity Framework Core utilise les catégories de journaux de logs suivantes :

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

Traçage

L’intégration .NET AspireOracleEntity Framework Core émet les activités de suivi suivantes à l’aide de OpenTelemetry:

  • OpenTelemetry.Instrumentation.EntityFrameworkCore

Métriques

L’intégration .NET AspireOracleEntity Framework Core prend actuellement en charge les métriques suivantes :

  • Microsoft.EntityFrameworkCore

Voir aussi