From 11dda360a9d4dca3c34eef9ac065c6106dcda82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Chevaldonn=C3=A9?= Date: Tue, 31 Dec 2019 21:14:48 +0100 Subject: [PATCH] updated sample about InMemory --- .../ex_041_004_InMemory/ReadMe.md | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md b/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md index a50a3d3..9ab4d4b 100644 --- a/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md +++ b/p08_BDD_EntityFramework/ex_041_004_InMemory/ReadMe.md @@ -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 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 options) +public NounoursContext(DbContextOptions 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