updated sample about InMemory

EFCore3_Reforged
Marc CHEVALDONNE 6 years ago
parent ee8e7cf33b
commit 11dda360a9

@ -35,12 +35,8 @@ namespace ex_041_004_InMemory
} }
} }
``` ```
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 :
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
```csharp ```csharp
protected override void OnConfiguring(DbContextOptionsBuilder options) 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;"); options.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ex_041_004_InMemory.Nounours.mdf;Trusted_Connection=True;");
} }
} }
``` ```
Dès lors, si rien n'est configuré, c'est donc le fournisseur *SqlServer* qui sera utilisé.
ajout des constructeurs 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 ```csharp
public SqlServerContext() public NounoursContext()
{ } { }
public SqlServerContext(DbContextOptions<SqlServerContext> options) public NounoursContext(DbContextOptions<NounoursContext> options)
: base(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 test
* nouveau projet * nouveau projet

Loading…
Cancel
Save