updated sample about InMemory

EFCore3_Reforged
Marc CHEVALDONNE 6 years ago
parent ee8e7cf33b
commit 11dda360a9

@ -35,12 +35,8 @@ namespace ex_041_004_InMemory
}
}
```
modification de OnConfiguring
pour avoir un provider par défaut, mais la possibilité d'en injecter un autre via un constructeur
le constructeur par défaut permettra d'utiliser la version par défaut
on utilise pour ça la propriété IsConfigured
On la modifie pour permettre d'injecter un autre fournisseur, tout en gardant celui-ci par défaut. On peut utiliser pour cela la propriété ```IsConfigured``` sur ```DbContextOptionsBuilder```.
La méthode ```OnConfiguring``` de ```NounoursContext``` est alors modifiée de la manière suivante :
```csharp
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
@ -49,18 +45,27 @@ protected override void OnConfiguring(DbContextOptionsBuilder options)
options.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ex_041_004_InMemory.Nounours.mdf;Trusted_Connection=True;");
}
}
```
ajout des constructeurs
```
Dès lors, si rien n'est configuré, c'est donc le fournisseur *SqlServer* qui sera utilisé.
Mais nous pouvons aussi permettre à l'utilisateur d'en injecter un autre. Pour cela, nous ajoutons deux constructeurs à notre classe :
* ```NounoursContext()``` : le constructeur par défaut ne fait rien, et en conséquence fera que la configuration *SqlServer* sera utilisée,
* ```NounoursContext(DbContextOptions<NounoursContext> options)``` : ce constructeur par défaut permettra d'injecter une autre fabrique de fournisseur, et permettra à l'utilisateur d'injecter n'importe quel autre fournisseur, dont **InMemory**.
Les constructeurs injectés sont donc :
```csharp
public SqlServerContext()
public NounoursContext()
{ }
public SqlServerContext(DbContextOptions<SqlServerContext> options)
public NounoursContext(DbContextOptions<NounoursContext> options)
: base(options)
{ }
```
La classe ```NounoursContext``` peut donc s'utiliser comme précédemment, sans changement, et la base *SqlServer* sera utilisée ; ou alors, on pourra injecter un autre fournisseur.
## Configuration du test unitaire
Le test unitaire est de type *xUnit* et va permettre d'injecter le fournisseur **InMemory**.
test
* nouveau projet

Loading…
Cancel
Save