/// Cet exemple montre comment construire une relation 1-many dans la base de données en utilisant les conventions de nommage Entity Framework.
/// On préférera cette solution par exemple lorsque nous n'avons pas accès à la classe Model et que nous ne pouvons donc pas utiliser les conventions de nommage
/// comme dans l'exemple précédent.
///
/// on utilise les données stubbées de MyStubDataInitializationStrategy
/// On affiche les Albums et les Morceaux.
/// Constatez que les identifiants sont bien les mêmes à cause de la relation 1-many.
///
/// Si vous ouvrez la base de données (via l'explorateur d'objets SQL Server), vous pourrez constater que la table Morceaux
/// contient une colonne Album_UniqueId qui permet d'assurer la relation 1-many.
/// </summary>
/// <param name="args"></param>
staticvoidMain(string[]args)
{
OutputEncoding=System.Text.Encoding.UTF8;
try
{
//création du DbContext et injection de la dépendance à MyStubDataInitializationStrategy
using(AlbumDBEntitiesdb=newAlbumDBEntities())
{
//choix de la stratégie et remplissage avec des données stubbées
DbContextInitializer.Seed(db);
WriteLine("Albums : ");
foreach(varaindb.Albums)
{
WriteLine($"\t{a.UniqueId}: {a.Titre} (sorti le : {a.DateDeSortie.ToString("d")})");
WriteLine("Votre base de données n'existe pas. C'est peut-être la première fois que vous exécutez cet exemple.");
WriteLine("Pour créer la base de données, suivez les instructions suivantes (que vous retrouvez en commentaires dans la classe Program) :");
WriteLine("Pour créer la base, ouvrez un invite de commandes et placez-vous dans le dossier de ce projet, ou bien,");
WriteLine("- dans Visual Studio ouvrez la Console du Gestionnaire de package (Outils -> Gestionnaire de package NuGet -> Console du Gestionnaire de package),");
WriteLine("- dans cette Console, vous devriez être dans le dossier de la solution, déplacez-vous dans celui du projet (ici : cd ex_042_009_EF_CF_One_to_Many_FluentAPI)");
* Migration : comme la classe dérivant de ```DbContext``` se trouve dans l'application Console, nous n'avons pas à préciser dans quel projet elle se trouve.
* Migration : comme la classe dérivant de ```DbContext``` se trouve dans l'application Console, nous n'avons pas à préciser dans quel projet elle se trouve. En revanche, il y a désormais deux contextes (celui d'origine ```NounoursContext``` et celui pour SQLite ```SQLiteNounoursContext```), il faut donc préciser le contexte avec ```--context``` :
```
```
dotnet ef migrations add migration_ex_041_004 --project ../ex_041_004_TestingInMemory
dotnet ef migrations add migration_ex_041_004 --context SQLiteNounoursContext
```
```
* Création de la table :
* Création de la table :
```
```
dotnet ef database update --project ../ex_041_004_TestingInMemory
dotnet ef database update --context SQLiteNounoursContext
```
```
* Génération et exécution
* Génération et exécution
Vous pouvez maintenant générer et exécuter l'exemple **ex_041_004_ConsoleTests_w_SQLite**.
Vous pouvez maintenant générer et exécuter l'exemple **ex_041_004_ConsoleTests_w_SQLite**.