Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
inclut :intégration d'hébergement et
Client intégration
Oracle Base de Données est un système de gestion de bases de données relationnelles très utilisé, développé et possédé par Oracle. L’intégration .NET AspireOracleEntity Framework Core vous permet de vous connecter à des serveurs Oracle existants ou de créer de nouveaux serveurs à partir de .NET avec l’image conteneur container-registry.orcale.com/databse/free.
L'hébergement .NET AspireOracle modélise le serveur comme type OracleDatabaseServerResource et la base de données comme type OracleDatabaseResource. Pour accéder à ces types et API, ajoutez le package NuGet 📦Aspire.Hosting.Oracle dans le projet hôte de l'application .
dotnet add package Aspire.Hosting.Oracle
Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances des packages dans les applications .NET.
Dans votre projet hôte d’application, appelez AddOracle pour ajouter et retourner un générateur de ressources de serveur Oracle. Chaînez un appel au générateur de ressources retourné pour AddDatabase, pour ajouter une base de données Oracle à la ressource serveur :
var builder = DistributedApplication.CreateBuilder(args);
var oracle = builder.AddOracle("oracle")
.WithLifetime(ContainerLifetime.Persistent);
var oracledb = oracle.AddDatabase("oracledb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(oracledb);
.WaitFor(oracledb);
// After adding all resources, run the app...
Notes
Le conteneur de base de données Oracle peut être lent à démarrer. Il est donc préférable d’utiliser une durée de vie persistante pour éviter les redémarrages inutiles. Pour plus d’informations, consultez durée de vie des ressources du conteneur.
Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte d’application, comme illustré dans l’exemple précédent avec l’image container-registry.oracle.com/database/free
, il crée un serveur Oracle sur votre ordinateur local. Une référence à votre générateur de ressources Oracle (la variable oracle
) est utilisée pour ajouter une base de données. La base de données est nommée oracledb
, puis ajoutée au ExampleProject
. La ressource Oracle inclut une password
aléatoire générée à l’aide de la méthode CreateDefaultPasswordParameter.
La méthode WithReference configure une connexion dans le ExampleProject
nommé "oracledb"
. Pour plus d'informations, consultez Cycle de vie des ressources du conteneur.
Conseil
Si vous préférez vous connecter à un serveur Oracle existant, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.
La ressource Oracle inclut les informations d’identification par défaut avec un mot de passe aléatoire.
Oracle prend en charge les mots de passe par défaut basés sur la configuration à l’aide de la variable d’environnement ORACLE_PWD
. Lorsque vous souhaitez fournir un mot de passe explicitement, vous pouvez le fournir en tant que paramètre :
var password = builder.AddParameter("password", secret: true);
var oracle = builder.AddOracle("oracle", password)
.WithLifetime(ContainerLifetime.Persistent);
var oracledb = oracle.AddDatabase("oracledb");
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(oracledb)
.WaitFor(oracledb);
Le code précédent obtient un paramètre à passer à l’API AddOracle
et affecte en interne le paramètre à la variable d’environnement ORACLE_PWD
du conteneur Oracle. Le paramètre password
est généralement spécifié en tant que secret utilisateur :
{
"Parameters": {
"password": "Non-default-P@ssw0rd"
}
}
Pour plus d’informations, consultez paramètres externes.
Pour ajouter un volume de données à la ressource Oracle, appelez la méthode WithDataVolume :
var builder = DistributedApplication.CreateBuilder(args);
var oracle = builder.AddOracle("oracle")
.WithDataVolume()
.WithLifetime(ContainerLifetime.Persistent);
var oracledb = oracle.AddDatabase("oracle");
builder.AddProject<Projects.ExampleProject>()
.WithReference(oracledb)
.WaitFor(oracledb);
// After adding all resources, run the app...
Le volume de données est utilisé pour conserver les données Oracle en dehors du cycle de vie de son conteneur. Lorsqu’un paramètre name
n’est pas fourni, le volume de données est monté à l'emplacement /opt/oracle/oradata
dans le conteneur Oracle et le nom est généré aléatoirement. Pour plus d’informations sur les volumes de données et sur la raison pour laquelle ils sont préférés par rapport aux montages de liaison , consultez la documentation Docker : Volumes.
Avertissement
Le mot de passe est stocké dans le volume de données. Lors de l’utilisation d’un volume de données et si le mot de passe change, il ne fonctionnera pas tant que vous ne supprimez pas le volume.
Pour ajouter un montage de liaison de données à la ressource Oracle, appelez la méthode WithDataBindMount :
var builder = DistributedApplication.CreateBuilder(args);
var oracle = builder.AddOracle("oracle")
.WithDataBindMount(source: @"C:\Oracle\Data");
var oracledb = oracle.AddDatabase("oracledb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(oracledb)
.WaitFor(oracledb);
// After adding all resources, run the app...
Important
Les montages de liaison de données ont des fonctionnalités limitées par rapport aux volumes , qui offrent de meilleures performances, une portabilité accrue et une sécurité renforcée, les rendant ainsi plus adaptés aux environnements de production. Toutefois, les montages de liaison permettent un accès direct et une modification des fichiers sur le système hôte, ce qui est idéal pour le développement et les tests nécessitant des modifications en temps réel.
Les montages de liaison de données s’appuient sur le système de fichiers de l’ordinateur hôte pour conserver les données Oracle entre les redémarrages de conteneur. Le montage de liaison de données est monté sur le chemin d’accès C:\Oracle\Data
sur Windows (ou /Oracle/Data
sur Unix) sur l’ordinateur hôte dans le conteneur Oracle. Pour plus d’informations sur les montages de liaison de données, consultez Docker docs : Liaison de montages.
L’intégration d’hébergement Oracle ajoute automatiquement un contrôle d’intégrité pour la ressource Oracle. La vérification d’intégrité vérifie que le serveur Oracle est en cours d’exécution et qu’une connexion peut être établie à celle-ci.
L’intégration de l'hébergement s'appuie sur le package AspNetCore.HealthChecks. NuGet 📦Oracle.
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 du client .NET AspireOracle, installez le 📦Aspire.Oracle. EntityFrameworkCore package NuGet dans le projet consommant le client, c’est-à-dire le projet pour l’application qui utilise le client Oracle. L’intégration du client Oracle inscrit une instance de DbContext que vous pouvez utiliser pour interagir avec Oracle.
dotnet add package Aspire.Oracle.EntityFrameworkCore
Dans le fichier Program.cs de votre projet consommant le client, appelez la méthode d’extension AddOracleDatabaseDbContext sur n’importe quel IHostApplicationBuilder pour inscrire un DbContext
à utiliser via le conteneur d’injection de dépendances. La méthode prend un paramètre de nom de connexion.
builder.AddOracleDatabaseDbContext<ExampleDbContext>(connectionName: "oracledb");
Conseil
Le paramètre connectionName
doit correspondre au nom utilisé lors de l’ajout de la ressource de base de données Oracle dans le projet hôte de l’application. En d’autres termes, lorsque vous appelez AddDatabase
et fournissez un nom de oracledb
ce même nom doit être utilisé lors de l’appel de AddOracleDatabaseDbContext
. Pour plus d’informations, consultez Ajouter les ressources serveur et base de données Oracle.
Vous pouvez ensuite récupérer l’instance DbContext à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :
public class ExampleService(ExampleDbContext context)
{
// Use database context...
}
Pour plus d'informations sur l'injection de dépendances, consultez l’injection de dépendances .NET.
Pour enrichir le DbContext
avec des services supplémentaires, tels que les réessais automatiques, les contrôles de santé, la journalisation et la télémétrie, appelez la méthode EnrichOracleDatabaseDbContext :
builder.EnrichOracleDatabaseDbContext<ExampleDbContext>(
connectionName: "oracledb",
configureSettings: settings =>
{
settings.DisableRetry = false;
settings.CommandTimeout = 30 // seconds
});
Le paramètre settings
est une instance de la classe OracleEntityFrameworkCoreSettings.
L’intégration .NET AspireOracleEntity Framework Core fournit plusieurs approches et options de configuration pour répondre aux exigences et conventions de votre projet.
Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings
, vous fournissez le nom de la chaîne de connexion lors de l’appel de builder.AddOracleDatabaseDbContext<TContext>()
:
builder.AddOracleDatabaseDbContext<ExampleDbContext>("oracleConnection");
La chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings
:
{
"ConnectionStrings": {
"oracleConnection": "Data Source=TORCL;User Id=OracleUser;Password=Non-default-P@ssw0rd;"
}
}
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.
L’intégration .NET AspireOracleEntity Framework Core prend en charge Microsoft.Extensions.Configuration à partir de fichiers de configuration tels que appsettings.json à l’aide de la clé Aspire:Oracle:EntityFrameworkCore
. Si vous avez configuré vos configurations dans la section Aspire:Oracle:EntityFrameworkCore
, vous pouvez simplement appeler la méthode sans passer de paramètre.
Voici un exemple de appsettings.json qui configure certaines des options disponibles :
{
"Aspire": {
"Oracle": {
"EntityFrameworkCore": {
"DisableHealthChecks": true,
"DisableTracing": true,
"DisableRetry": false,
"CommandTimeout": 30
}
}
}
}
Conseil
La propriété CommandTimeout
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.
Vous pouvez également transmettre le délégué Action<OracleEntityFrameworkCoreSettings>
pour configurer certaines ou toutes les options en ligne, par exemple pour désactiver les vérifications de santé à partir du code :
builder.AddOracleDatabaseDbContext<ExampleDbContext>(
"oracle",
static settings => settings.DisableHealthChecks = true);
ou
builder.EnrichOracleDatabaseDbContext<ExampleDbContext>(
static settings => settings.DisableHealthChecks = true);
Voici les options configurables avec les valeurs par défaut correspondantes :
Nom | Description |
---|---|
ConnectionString |
Chaîne de connexion de la base de données Oracle à laquelle se connecter. |
DisableHealthChecks |
Valeur booléenne qui indique si la vérification d’intégrité de la base de données est désactivée ou non. |
DisableTracing |
Valeur booléenne qui indique si le suivi OpenTelemetry est désactivé ou non. |
DisableRetry |
Valeur booléenne qui indique si les nouvelles tentatives de commande doivent être désactivées ou non. |
CommandTimeout |
Temps en secondes d’attente de l’exécution de la commande. |
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.
Par défaut, l’intégration .NET AspireOracleEntity Framework Core gère les éléments suivants :
true
.DbContextHealthCheck
, qui appelle la méthode CanConnectAsync de EF Core. Le nom de la vérification d’intégrité est le nom du type TContext
..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.
L’intégration .NET AspireOracleEntity Framework Core utilise les catégories de journaux de logs suivantes :
Microsoft.EntityFrameworkCore.ChangeTracking
Microsoft.EntityFrameworkCore.Database.Command
Microsoft.EntityFrameworkCore.Database.Connection
Microsoft.EntityFrameworkCore.Database.Transaction
Microsoft.EntityFrameworkCore.Infrastructure
Microsoft.EntityFrameworkCore.Migrations
Microsoft.EntityFrameworkCore.Model
Microsoft.EntityFrameworkCore.Model.Validation
Microsoft.EntityFrameworkCore.Query
Microsoft.EntityFrameworkCore.Update
L’intégration .NET AspireOracleEntity Framework Core émet les activités de suivi suivantes à l’aide de OpenTelemetry:
L’intégration .NET AspireOracleEntity Framework Core prend actuellement en charge les métriques suivantes :
Commentaires sur .NET Aspire
.NET Aspire est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Parcours d’apprentissage
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization