updates providers
continuous-integration/drone/push Build is passing Details

master
Marc CHEVALDONNE 2 years ago
parent 9eef4792ef
commit 80f3b0834e

@ -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 ### 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 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 migrations add myMigrationName
dotnet ef database update dotnet ef database update
@ -88,7 +88,7 @@ dotnet ef database update
## Méthode 2 : injection de ```DbContextOptions``` ## 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. 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```) : 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. 1. possède un constructeur permettant de passer un ```DbContextOptions``` en paramètre.
```csharp TheDbContext ```csharp TheDbContext

@ -42,7 +42,7 @@ Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, da
- Npgsql.EntityFrameworkCore.PostgreSQL - Npgsql.EntityFrameworkCore.PostgreSQL
### Code ### 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 ```csharp MyDbContext
public class MyDbContext : DbContext 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 ### 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 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 migrations add myMigrationName
dotnet ef database update dotnet ef database update
@ -75,7 +75,7 @@ dotnet ef database update
## Méthode 2 : injection de ```DbContextOptions``` ## 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. 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```) : 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. 1. possède un constructeur permettant de passer un ```DbContextOptions``` en paramètre.
```csharp TheDbContext ```csharp TheDbContext

@ -26,7 +26,7 @@ Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, da
- Microsoft.EntityFrameworkCore.SQLite - Microsoft.EntityFrameworkCore.SQLite
### Code ### 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 ```csharp MyDbContext
public class MyDbContext : DbContext 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 ### 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 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 migrations add myMigrationName
dotnet ef database update --startup-project path/to/the/startup/project/ 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``` ## 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. 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```) : 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. 1. possède un constructeur permettant de passer un ```DbContextOptions``` en paramètre.
```csharp TheDbContext ```csharp TheDbContext
@ -119,3 +119,15 @@ await context.Database.EnsureCreatedAsync(); //pour créer la base si elle n'exi
:::note migrations ? :::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. 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.

@ -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). Vous pouvez vérifier le contenu de votre base en utilisant l'*Explorateur d'objets SQL Server* (voir plus bas).
::: :::
## NuGet *Utilisez l'une ou l'autre des 2 méthodes suivantes.*
Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, dans le projet contenant votre ```DbContext``` et vos entités :
## 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
- Microsoft.EntityFrameworkCore.Tools - Microsoft.EntityFrameworkCore.Tools
- Microsoft.EntityFrameworkCore.SqlServer - Microsoft.EntityFrameworkCore.SqlServer
## DbContext ### Code
Dans votre classe héritant de DbContext, utilisez la méthode d'extension ```UseSqlServer```. Dans votre classe héritant de ```DbContext```, utilisez la méthode d'extension ```UseSqlServer```.
```csharp MyDbContext ```csharp MyDbContext
public class MyDbContext : DbContext 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. 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 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 migrations add myMigrationName
dotnet ef database update --startup-project path/to/the/startup/project/ 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<TheDbContext> 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<TheDbContext>()
.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 ? ## 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). Vous pouvez vérifier le contenu de votre base en utilisant l'*Explorateur d'objets SQL Server* (voir plus bas).

Loading…
Cancel
Save