reprise de l'exemple 041_001 avec seulement SqlServer
nuget, dotnet restore...
# ex_041_004_InMemory
*31/12/2019 ⋅ Marc Chevaldonné*
---
Le fournisseur **InMemory** est utilisé pour tester des bases de données sans avoir à créer réellement une base de données.
Ceci permet de tester les accès à votre "base" de manière toutefois approximative.
En effet, **InMemory** n'est pas une base de données relationnelle : il y a donc des limitations.
Cet exemple montre comment utiliser **InMemory** à travers une injection de dépendance. En d'autres termes, vous continuez à définir votre chaîne de connexion sur une base de données, mais vous permettez néanmoins l'utilisation, à la demande, de **InMemory** pour des tests.
Puisque ce fournisseur devient intéressant dans le cas de tests, j'ai donc ajouté un 2ème projet lié à cet exemple, permettant d'avoir accès à des tests unitaires utilisant **InMemory**.
Pour le reste de l'exemple, celui-ci n'apporte rien de nouveau par rapport à l'exemple ex_041_001.
---
## Comment a été construit cet exemple ?
Cet exemple est tout d'abord construit de la même manière que l'exemple *ex_041_001_ConnectionStrings*.
Il ne faut pas oublier les NuGet nécessaires :
* Microsoft.EntityFrameworkCore : pour le projet en général
* Microsoft.EntityFrameworkCore.SqlServer : pour le *provider* SQL Server
* Microsoft.EntityFrameworkCore.Tools : pour bénéficier des outils de Design, de migrations, etc.
J'ai ensuite décidé de renommer ma classe dérivant de ```DbContext``` en ```NounoursContext``` car je n'ai plus de raison de faire la différence entre SqlServer et SQLite.
On obtient ainsi la classe ```NounoursContext``` suivante :