update Sqlite provider page
continuous-integration/drone/push Build is passing Details

master
Marc CHEVALDONNE 2 years ago
parent 794ef4471a
commit 0137bfe6c8

@ -20,7 +20,11 @@ Depuis Visual Studio (mac ou windows), installez les packages NuGet suivants, da
- Microsoft.EntityFrameworkCore.Tools
- Microsoft.EntityFrameworkCore.SQLite
## DbContext
*Utilisez ensuite 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.
### Code
Dans votre classe héritant de DbContext, utilisez la méthode d'extension ```UseSqlite```.
```csharp MyDbContext
@ -56,10 +60,50 @@ n'oubliez pas de rajouter la ligne suivante pour lui permettre de la trouver dan
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````) :
```
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.
:::warning 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...(...);
}
}
```
:::
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>().UseSqlite($"Data Source=LeNomDe.MaBase.db").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 (```UseSqlite```) et la chaîne de connexion (```"Data Source=LeNomDe.MaBase.db"```).
* 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.
:::

Loading…
Cancel
Save