From 80f3b0834eb1f3f0a8527a4a276e9605f017448b Mon Sep 17 00:00:00 2001 From: marcchevaldonne Date: Thu, 2 Feb 2023 16:46:23 +0100 Subject: [PATCH] updates providers --- .../Entity-Framework/Providers/Mariadb.mdx | 4 +- .../Entity-Framework/Providers/Postgres.mdx | 6 +- .../Entity-Framework/Providers/SQLite.mdx | 18 ++++- .../Entity-Framework/Providers/SqlServer.mdx | 71 +++++++++++++++++-- 4 files changed, 85 insertions(+), 14 deletions(-) diff --git a/Documentation/docusaurus/docs/Entity-Framework/Providers/Mariadb.mdx b/Documentation/docusaurus/docs/Entity-Framework/Providers/Mariadb.mdx index 1877569..bf997a9 100644 --- a/Documentation/docusaurus/docs/Entity-Framework/Providers/Mariadb.mdx +++ b/Documentation/docusaurus/docs/Entity-Framework/Providers/Mariadb.mdx @@ -79,7 +79,7 @@ Pour le reste de votre projet EntityFrameworkCore, aucune différence avec les m ### Migrations et création de la base de données Vous pouvez maintenant créer les migrations et la base de données à l'aide des commandes classiques -(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext````) : +(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext```) : ``` dotnet ef migrations add myMigrationName dotnet ef database update @@ -88,7 +88,7 @@ dotnet ef database update ## Méthode 2 : injection de ```DbContextOptions``` Cette méthode permet d'utiliser une classe héritant de ```DbContext``` (```TheDbContext``` par exemple) sans en changer le code. -:::warning Condition sur ```OnConfiguring``` +:::caution Condition sur ```OnConfiguring``` Il faut néanmoins que la classe fille de ```DbContext``` (par exemple ```TheDbContext```) : 1. possède un constructeur permettant de passer un ```DbContextOptions``` en paramètre. ```csharp TheDbContext diff --git a/Documentation/docusaurus/docs/Entity-Framework/Providers/Postgres.mdx b/Documentation/docusaurus/docs/Entity-Framework/Providers/Postgres.mdx index 0c6b61c..31b3056 100644 --- a/Documentation/docusaurus/docs/Entity-Framework/Providers/Postgres.mdx +++ b/Documentation/docusaurus/docs/Entity-Framework/Providers/Postgres.mdx @@ -42,7 +42,7 @@ Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, da - Npgsql.EntityFrameworkCore.PostgreSQL ### Code -Dans votre classe héritant de DbContext, utilisez la méthode d'extension ```UseNpgsql```. +Dans votre classe héritant de ```DbContext```, utilisez la méthode d'extension ```UseNpgsql```. ```csharp MyDbContext public class MyDbContext : DbContext @@ -66,7 +66,7 @@ Pour le reste de votre projet EntityFrameworkCore, aucune différence avec les m ### Migrations et création de la base de données Vous pouvez maintenant créer les migrations et la base de données à l'aide des commandes classiques -(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext````) : +(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext```) : ``` dotnet ef migrations add myMigrationName dotnet ef database update @@ -75,7 +75,7 @@ dotnet ef database update ## Méthode 2 : injection de ```DbContextOptions``` Cette méthode permet d'utiliser une classe héritant de ```DbContext``` (```TheDbContext``` par exemple) sans en changer le code. -:::warning Condition sur ```OnConfiguring``` +:::caution Condition sur ```OnConfiguring``` Il faut néanmoins que la classe fille de ```DbContext``` (par exemple ```TheDbContext```) : 1. possède un constructeur permettant de passer un ```DbContextOptions``` en paramètre. ```csharp TheDbContext diff --git a/Documentation/docusaurus/docs/Entity-Framework/Providers/SQLite.mdx b/Documentation/docusaurus/docs/Entity-Framework/Providers/SQLite.mdx index df2731e..1384124 100644 --- a/Documentation/docusaurus/docs/Entity-Framework/Providers/SQLite.mdx +++ b/Documentation/docusaurus/docs/Entity-Framework/Providers/SQLite.mdx @@ -26,7 +26,7 @@ Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, da - Microsoft.EntityFrameworkCore.SQLite ### Code -Dans votre classe héritant de DbContext, utilisez la méthode d'extension ```UseSqlite```. +Dans votre classe héritant de ```DbContext```, utilisez la méthode d'extension ```UseSqlite```. ```csharp MyDbContext public class MyDbContext : DbContext @@ -63,7 +63,7 @@ Pour le reste de votre projet EntityFrameworkCore, aucune différence avec les m ### Migrations et création de la base de données Vous pouvez maintenant créer les migrations et la base de données à l'aide des commandes classiques -(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext````) : +(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext```) : ``` dotnet ef migrations add myMigrationName dotnet ef database update --startup-project path/to/the/startup/project/ @@ -72,7 +72,7 @@ dotnet ef database update --startup-project path/to/the/startup/project/ ## Méthode 2 : injection de ```DbContextOptions``` Cette méthode permet d'utiliser une classe héritant de ```DbContext``` (```TheDbContext``` par exemple) sans en changer le code. -:::warning Condition sur ```OnConfiguring``` +:::caution Condition sur ```OnConfiguring``` Il faut néanmoins que la classe fille de ```DbContext``` (par exemple ```TheDbContext```) : 1. possède un constructeur permettant de passer un ```DbContextOptions``` en paramètre. ```csharp TheDbContext @@ -119,3 +119,15 @@ await context.Database.EnsureCreatedAsync(); //pour créer la base si elle n'exi :::note migrations ? Avec cette méthode, il n'est pas nécessaire de créer les migrations ou la base de données en lignes de commande. ::: + +## Comment explorer le contenu de la base de données ? + +Pour vérifier le contenu de votre base SQLite, vous pouvez utiliser le programme *DB Browser* : +* Rendez-vous sur la page : https://sqlitebrowser.org/dl/ et téléchargez le programme *DB Browser*. +* Lancez *DB Browser for SQLite* +* Glissez-déposez au milieu de la fenêtre de *DB Browser for SQLite* le fichier *XXXX.XXXX.db* qui a été généré par l'exécution du programme. +![DB Browser for SQLite](./../ConnectionStringsFiles/dbbrowser_01.png) +* Choisissez l'onglet *Parcourir les données* +* Observez les résultats obtenus +![DB Browser for SQLite](./../ConnectionStringsFiles/dbbrowser_02.png) + * Vous devriez maintenant pouvoir voir les données. \ No newline at end of file diff --git a/Documentation/docusaurus/docs/Entity-Framework/Providers/SqlServer.mdx b/Documentation/docusaurus/docs/Entity-Framework/Providers/SqlServer.mdx index 96a28b6..258bba9 100644 --- a/Documentation/docusaurus/docs/Entity-Framework/Providers/SqlServer.mdx +++ b/Documentation/docusaurus/docs/Entity-Framework/Providers/SqlServer.mdx @@ -15,14 +15,19 @@ Cette méthode utilise SqlServer à travers une base de données dans en local. Vous pouvez vérifier le contenu de votre base en utilisant l'*Explorateur d'objets SQL Server* (voir plus bas). ::: -## NuGet -Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, dans le projet contenant votre ```DbContext``` et vos entités : +*Utilisez l'une ou l'autre des 2 méthodes suivantes.* + +## Méthode 1 : en modifiant une classe fille de ```DbContext``` +Il faut d'abord modifier du code, puis lancer les commandes de migration et de création de la base de données. + +### NuGet +Depuis Visual Studio (windows seulement), installez les packages NuGet suivants, dans le projet contenant votre ```DbContext``` et vos entités : - Microsoft.EntityFrameworkCore - Microsoft.EntityFrameworkCore.Tools - Microsoft.EntityFrameworkCore.SqlServer -## DbContext -Dans votre classe héritant de DbContext, utilisez la méthode d'extension ```UseSqlServer```. +### Code +Dans votre classe héritant de ```DbContext```, utilisez la méthode d'extension ```UseSqlServer```. ```csharp MyDbContext public class MyDbContext : DbContext @@ -40,14 +45,68 @@ public class MyDbContext : DbContext Pour le reste de votre projet EntityFrameworkCore, aucune différence avec les méthodes présentées précédemment. -## Migrations et création de la base de données +### Migrations et création de la base de données Vous pouvez maintenant créer les migrations et la base de données à l'aide des commandes classiques -(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext````) : +(par exemple depuis le projet dans lequel se trouve votre classe héritant de ```DbContext```) : ``` dotnet ef migrations add myMigrationName dotnet ef database update --startup-project path/to/the/startup/project/ ``` +## Méthode 2 : injection de ```DbContextOptions``` +Cette méthode permet d'utiliser une classe héritant de ```DbContext``` (```TheDbContext``` par exemple) sans en changer le code. + +:::caution Condition sur ```OnConfiguring``` +Il faut néanmoins que la classe fille de ```DbContext``` (par exemple ```TheDbContext```) : +1. possède un constructeur permettant de passer un ```DbContextOptions``` en paramètre. +```csharp TheDbContext +public TheDbContext(DbContextOptions options) + : base(options) +{ +} +``` +2. n'impose pas un fournisseur et une chaîne de connexion dans la méthode OnConfiguring, +par exemple à l'aide d'un ```if(!optionsBuilder.IsConfigured)``` +```csharp TheDbContext +protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) +{ + if(!optionsBuilder.IsConfigured) + { + optionsBuilder.Use...(...); + } +} +``` +::: + +### NuGet +Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, dans le projet contenant votre ```DbContext``` et vos entités +(cela devrait déjà être fait si vous vous injectez un nouveau fournisseur dans un ```DbContext``` existant déjà) : +- Microsoft.EntityFrameworkCore +- Microsoft.EntityFrameworkCore.Tools + +Puis installez le package Nuget suivant dans le projet qui contiendra la création des options et l'injection dans le contexte +(le projet de démarrage par exemple) : +- Microsoft.EntityFrameworkCore.SqlServer + +### Code +On peut dès lors, avant la création du contexte, créer des options permettant de choisir le fournisseur de la manière suivante : +```csharp Program.cs (ou autre) +var options = new DbContextOptionsBuilder() + .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=LeNomDe.MaBase.mdf;Trusted_Connection=True;") + .Options; +var context = new TheDbContext(options); //ou une autre classe dérivant de TheDbContext +await context.Database.EnsureCreatedAsync(); //pour créer la base si elle n'existe pas déjà +``` + +* La première ligne permet de choisir les options, dont le fournisseur (```UseSqlServer```) et la chaîne de connexion (```@"Server=(localdb)\mssqllocaldb;Database=LeNomDe.MaBase.mdf;Trusted_Connection=True;"```). +* La deuxième ligne crée le contexte en injectant ces options. +* La troisième ligne s'assure que la base de données est bien créée ou qu'elle existait déjà. + +:::note migrations ? +Avec cette méthode, il n'est pas nécessaire de créer les migrations ou la base de données en lignes de commande. +::: + + ## Comment explorer le contenu de la base de données ? Vous pouvez vérifier le contenu de votre base en utilisant l'*Explorateur d'objets SQL Server* (voir plus bas).