end of .NET5.0 update

pull/1/head
Marc CHEVALDONNE 2 years ago
parent 4def74406a
commit 88ac908fc7

@ -412,8 +412,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_039_002_LINQ_to_XML", "e
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_040_001_LINQ_to_Json", "ex_040_001_LINQ_to_Json\ex_040_001_LINQ_to_Json.csproj", "{B506ECD8-853D-4E69-8F0A-AFCDB7FEABF3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_042_009_EF_CF_One_to_Many_FluentAPI", "ex_042_009_EF_CF_One_to_Many_FluentAPI\ex_042_009_EF_CF_One_to_Many_FluentAPI.csproj", "{2C53F069-6E87-4A36-8915-E0219EBA8BA7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_042_010_EF_CF_Many_to_Many", "ex_042_010_EF_CF_Many_to_Many\ex_042_010_EF_CF_Many_to_Many.csproj", "{C6EF99F3-959D-4096-8ABE-140596DD14BD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_042_012_EF_CF_Dictionary", "ex_042_012_EF_CF_Dictionary\ex_042_012_EF_CF_Dictionary.csproj", "{D9BE7F40-ADCE-415B-AF36-8D9B40B6DB7F}"
@ -3487,26 +3485,6 @@ Global
{B506ECD8-853D-4E69-8F0A-AFCDB7FEABF3}.Release|x64.Build.0 = Release|Any CPU
{B506ECD8-853D-4E69-8F0A-AFCDB7FEABF3}.Release|x86.ActiveCfg = Release|Any CPU
{B506ECD8-853D-4E69-8F0A-AFCDB7FEABF3}.Release|x86.Build.0 = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|ARM.Build.0 = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|ARM64.Build.0 = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|x64.ActiveCfg = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|x64.Build.0 = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|x86.ActiveCfg = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Debug|x86.Build.0 = Debug|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|Any CPU.Build.0 = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|ARM.ActiveCfg = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|ARM.Build.0 = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|ARM64.ActiveCfg = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|ARM64.Build.0 = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|x64.ActiveCfg = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|x64.Build.0 = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|x86.ActiveCfg = Release|Any CPU
{2C53F069-6E87-4A36-8915-E0219EBA8BA7}.Release|x86.Build.0 = Release|Any CPU
{C6EF99F3-959D-4096-8ABE-140596DD14BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C6EF99F3-959D-4096-8ABE-140596DD14BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C6EF99F3-959D-4096-8ABE-140596DD14BD}.Debug|ARM.ActiveCfg = Debug|Any CPU
@ -4329,24 +4307,34 @@ Global
{A14CDD6E-3E6E-4E7A-9277-3F00C0F658FD}.Release|x86.Build.0 = Release|Any CPU
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|Any CPU.ActiveCfg = Debug|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|Any CPU.Build.0 = Debug|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|Any CPU.Deploy.0 = Debug|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|ARM.ActiveCfg = Debug|ARM
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|ARM.Build.0 = Debug|ARM
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|ARM.Deploy.0 = Debug|ARM
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|ARM64.ActiveCfg = Debug|ARM64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|ARM64.Build.0 = Debug|ARM64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|ARM64.Deploy.0 = Debug|ARM64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|x64.ActiveCfg = Debug|x64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|x64.Build.0 = Debug|x64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|x64.Deploy.0 = Debug|x64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|x86.ActiveCfg = Debug|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|x86.Build.0 = Debug|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Debug|x86.Deploy.0 = Debug|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|Any CPU.ActiveCfg = Release|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|Any CPU.Build.0 = Release|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|Any CPU.Deploy.0 = Release|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|ARM.ActiveCfg = Release|ARM
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|ARM.Build.0 = Release|ARM
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|ARM.Deploy.0 = Release|ARM
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|ARM64.ActiveCfg = Release|ARM64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|ARM64.Build.0 = Release|ARM64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|ARM64.Deploy.0 = Release|ARM64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|x64.ActiveCfg = Release|x64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|x64.Build.0 = Release|x64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|x64.Deploy.0 = Release|x64
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|x86.ActiveCfg = Release|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|x86.Build.0 = Release|x86
{0D922BCD-7C0F-43FF-A015-F547716B8284}.Release|x86.Deploy.0 = Release|x86
{097B0926-6663-4B7E-BBBE-DAA7EE278C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{097B0926-6663-4B7E-BBBE-DAA7EE278C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{097B0926-6663-4B7E-BBBE-DAA7EE278C7C}.Debug|ARM.ActiveCfg = Debug|Any CPU
@ -4982,7 +4970,6 @@ Global
{CF1AE501-3518-45CC-94AA-D6DE047EA022} = {13CDB6B1-9B1D-43A9-9E9E-08989D55ACA5}
{26400B99-2FB6-4B5F-BE2B-D15124F2B51D} = {13CDB6B1-9B1D-43A9-9E9E-08989D55ACA5}
{B506ECD8-853D-4E69-8F0A-AFCDB7FEABF3} = {3BD95300-E2F6-4CA6-B4CC-5D19DF5C6AC0}
{2C53F069-6E87-4A36-8915-E0219EBA8BA7} = {593200F9-6D14-43BC-9289-8BB75FAC6552}
{C6EF99F3-959D-4096-8ABE-140596DD14BD} = {593200F9-6D14-43BC-9289-8BB75FAC6552}
{D9BE7F40-ADCE-415B-AF36-8D9B40B6DB7F} = {593200F9-6D14-43BC-9289-8BB75FAC6552}
{504AB98B-3C2D-493B-BA70-6D67734732D5} = {663523E4-3B60-4534-876F-8BD77110E6D8}

@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<AssemblyName>ex_005.0.7_Main</AssemblyName>
<AssemblyName>ex_003_001_Main</AssemblyName>
<OutputType>Exe</OutputType>
<PackageId>ex_005.0.7_Main</PackageId>
<PackageId>ex_003_001_Main</PackageId>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>

@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<AssemblyName>ex_015.0.7_FormattingParsingNumEtBool</AssemblyName>
<AssemblyName>ex_013_001_FormattingParsingNumEtBool</AssemblyName>
<OutputType>Exe</OutputType>
<PackageId>ex_015.0.7_FormattingParsingNumEtBool</PackageId>
<PackageId>ex_013_001_FormattingParsingNumEtBool</PackageId>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>

@ -1,9 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<AssemblyName>ex_025.0.7_IEnumerator_ex1</AssemblyName>
<AssemblyName>ex_023_001_IEnumerator_ex1</AssemblyName>
<OutputType>Exe</OutputType>
<PackageId>ex_025.0.7_IEnumerator_ex1</PackageId>
<PackageId>ex_023_001_IEnumerator_ex1</PackageId>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>

@ -28,7 +28,7 @@ namespace Reflection
//permet d'accéder au dossier courant (ici l'endroit où se trouve l'exécutable)
WriteLine(System.IO.Directory.GetCurrentDirectory());
DirectoryInfo folder = new DirectoryInfo(Directory.GetCurrentDirectory().ToString()+"..\\..\\..\\plugin\\netcoreapp3.0\\");
DirectoryInfo folder = new DirectoryInfo(Directory.GetCurrentDirectory().ToString()+"..\\..\\..\\..\\plugin\\net5.0\\");
FileInfo[] files = folder.GetFiles();
foreach (FileInfo file in files.Where(f => f.Extension.Equals(".dll")))

@ -23,10 +23,10 @@
<StartupObject />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\..\bin\net5.0</OutputPath>
<OutputPath>..\..\bin\debug</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>..\..\bin\net5.0</OutputPath>
<OutputPath>..\..\bin\release</OutputPath>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\MammifereDll\ex_036_001_Mammifere.csproj" />

@ -23,10 +23,10 @@
<StartupObject />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\..\plugin\net5.0</OutputPath>
<OutputPath>..\..\plugin</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>..\..\plugin\net5.0</OutputPath>
<OutputPath>..\..\plugin</OutputPath>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\MammifereDll\ex_036_001_Mammifere.csproj" />

@ -23,9 +23,9 @@
<StartupObject />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\..\bin\net5.0</OutputPath>
<OutputPath>..\..\bin\debug</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>..\..\bin\net5.0</OutputPath>
<OutputPath>..\..\bin\release</OutputPath>
</PropertyGroup>
</Project>

@ -1,41 +0,0 @@
// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : Album.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-19
//
// ========================================================================
using System;
using System.Collections.Generic;
namespace ex_042_009_EF_CF_One_to_Many_FluentAPI
{
/// <summary>
/// Album est une classe POCO, i.e. Plain Old CLR Object.
/// Elle a une relation 1-many avec la classe Morceau via la propriété Morceaux.
/// </summary>
public class Album
{
public Guid UniqueId
{
get; set;
}
public string Titre
{
get; set;
}
public DateTime DateDeSortie
{
get; set;
}
public virtual ICollection<Morceau> Morceaux { get; set; } = new List<Morceau>();
}
}

@ -1,66 +0,0 @@
// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : AlbumDBEntities.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-20
//
// ========================================================================
using Microsoft.EntityFrameworkCore;
using System;
namespace ex_042_009_EF_CF_One_to_Many_FluentAPI
{
/// <summary>
/// La classe qui dérive de DbContext est celle qui permettra de faire les opérations CRUD sur le modèle.
/// Cette classe contient deux DbSet<T> pour permettre de réaliser des opérations CRUD sur les types T, ici Album et Morceau.
/// </summary>
public class AlbumDBEntities : DbContext
{
public virtual DbSet<Album> Albums { get; set; }
public virtual DbSet<Morceau> Morceaux { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ex_042_009_EF_CF_One_to_Many_FluentAPI.Albums.mdf;Trusted_Connection=True;");
}
/// <summary>
/// méthode appelée lors de la création du modèle.
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//création de la table TableNounours
modelBuilder.Entity<Album>().ToTable("Albums"); //nom de la table
modelBuilder.Entity<Album>().HasKey(a => a.UniqueId); //définition de la clé primaire
modelBuilder.Entity<Album>().Property(a => a.UniqueId)
.ValueGeneratedOnAdd(); //définition du mode de génération de la clé : génération à l'insertion
//création de la table "Carnets"
modelBuilder.Entity<Morceau>().ToTable("Morceaux"); // nom de la table
modelBuilder.Entity<Morceau>().HasKey(m => m.UniqueId); //définition de la clé primaire
modelBuilder.Entity<Morceau>().Property(m => m.UniqueId)
.ValueGeneratedOnAdd(); // définition du mode de génération de la clé : pas de génération automatique
//on crée une propriété fantôme (shadow property) pour l'entity Morceau qu'on utilisera comme clé étrangère (foreign key)
// En effet, j'ai pris le cas où nous décidons d'utiliser une classe existante pour laquelle aucune clé étrangère n'a été prévue.
// Il me semblait donc logique qu'on cherche à l'utiliser sans qu'elle soit dans le modèle
modelBuilder.Entity<Morceau>().Property<Guid>("AlbumId");
//on précise qu'il y a une relation entre Album et Morceau
modelBuilder.Entity<Album>().HasMany(a => a.Morceaux) // on dit que l'Album a plusieurs morceaux
.WithOne(m => m.Album) // et que chaque morceau a un album
.HasForeignKey("AlbumId"); //on utilise la clé étrangère fantôme créée précédemment
//Si vous regardez la table obtenue, vous pouvez voir qu'Entity Framework a automatiquement généré une clé étrangère.
base.OnModelCreating(modelBuilder);
}
}
}

@ -1,85 +0,0 @@
// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : DbContextInitializer.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-19
//
// ========================================================================
using Microsoft.EntityFrameworkCore;
using System;
namespace ex_042_009_EF_CF_One_to_Many_FluentAPI
{
/// <summary>
/// initialiseur de stratégies...
/// </summary>
public static class DbContextInitializer
{
/// <summary>
/// remplissage de la base avec des données stubbées.
/// </summary>
/// <param name="context">base à remplir</param>
public static void Seed(AlbumDBEntities context)
{
SetInitializer(context, InitializationStrategies.DropCreateDatabaseAlways);
Album kindofblue = new Album { Titre = "Kind of Blue", DateDeSortie = new DateTime(1959, 8, 17) };
Morceau[] kindofblueMorceaux = { new Morceau { Album = kindofblue, Titre = "So What" },
new Morceau { Album = kindofblue, Titre = "Freddie Freeloader" },
new Morceau { Album = kindofblue, Titre = "Blue in Green" },
new Morceau { Album = kindofblue, Titre = "All Blues" },
new Morceau { Album = kindofblue, Titre = "Flamenco Sketches" } };
foreach (var m in kindofblueMorceaux) kindofblue.Morceaux.Add(m);
Album dialogue = new Album { Titre = "Dialogue", DateDeSortie = new DateTime(1965, 9, 1) };
Morceau[] dialogueMorceaux = { new Morceau { Album = dialogue, Titre = "Catta" },
new Morceau { Album = dialogue, Titre = "Idle While" },
new Morceau { Album = dialogue, Titre = "Les Noirs Marchant" },
new Morceau { Album = dialogue, Titre = "Dialogue" },
new Morceau { Album = dialogue, Titre = "Ghetto Lights" },
new Morceau { Album = dialogue, Titre = "Jasper" } };
foreach (var m in dialogueMorceaux) dialogue.Morceaux.Add(m);
context.Albums.AddRange(new Album[] { kindofblue, dialogue });
context.Morceaux.AddRange(kindofblueMorceaux);
context.Morceaux.AddRange(dialogueMorceaux);
context.SaveChanges();
}
/// <summary>
/// les différentes stratégies de création de la base
/// </summary>
public enum InitializationStrategies
{
CreateDatabaseIfNotExists,
DropCreateDatabaseIfModelChanges,
DropCreateDatabaseAlways
}
public static void SetInitializer(DbContext context, InitializationStrategies strategy)
{
switch (strategy)
{
//par défaut : crée la base seulement si elle n'existe pas
default:
case InitializationStrategies.CreateDatabaseIfNotExists:
context.Database.EnsureCreated();
break;
//recrée la base même si elle existe déjà
case InitializationStrategies.DropCreateDatabaseAlways:
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
break;
//recrée la base seulement si le modèle change : impossible aujourd'hui en Entity Framework Core...
case InitializationStrategies.DropCreateDatabaseIfModelChanges:
throw new NotImplementedException("Le mode DropCreateDatabaseIfModelChanges ne peut pas encore exister sous Entity Framework Core");
}
}
}
}

@ -1,39 +0,0 @@
// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : Morceau.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-19
//
// ========================================================================
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ex_042_009_EF_CF_One_to_Many_FluentAPI
{
/// <summary>
/// Morceau est une classe POCO, i.e. Plain Old CLR Object.
/// Elle a une relation 1-many avec la classe Morceau via la propriété Album.
/// </summary>
public class Morceau
{
public Guid UniqueId
{
get; set;
}
public string Titre
{
get; set;
}
public virtual Album Album
{
get; set;
}
}
}

@ -1,86 +0,0 @@
// ========================================================================
//
// Copyright (C) 2016-2017 MARC CHEVALDONNE
// marc.chevaldonne.free.fr
//
// Module : Program.cs
// Author : Marc Chevaldonné
// Creation date : 2016-10-19
//
// ========================================================================
using System;
using static System.Console;
namespace ex_042_009_EF_CF_One_to_Many_FluentAPI
{
class Program
{
/// <summary>
/// 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>
static void Main(string[] args)
{
OutputEncoding = System.Text.Encoding.UTF8;
try
{
//création du DbContext et injection de la dépendance à MyStubDataInitializationStrategy
using (AlbumDBEntities db = new AlbumDBEntities())
{
//choix de la stratégie et remplissage avec des données stubbées
DbContextInitializer.Seed(db);
WriteLine("Albums : ");
foreach (var a in db.Albums)
{
WriteLine($"\t{a.UniqueId}: {a.Titre} (sorti le : {a.DateDeSortie.ToString("d")})");
foreach (var m in a.Morceaux)
{
WriteLine($"\t\t{m.Titre}");
}
}
WriteLine();
WriteLine("Morceaux :");
foreach (var m in db.Morceaux)
{
WriteLine($"\t{m.UniqueId}: {m.Titre} (album : {m.Album.Titre})");
}
}
}
catch (NotImplementedException exception)
{
WriteLine(exception.Message);
}
catch (Exception e)
{
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)");
WriteLine("- tapez : dotnet restore (pour restaurer les packages .NET Core)");
WriteLine("- tapez : dotnet ef migrations add MyFirstMigration");
WriteLine(" note : vous pourrez détruire le dossier Migrations une fois la base créée");
WriteLine("- tapez : dotnet ef database update");
WriteLine(" Ceci génère la base de données en utilisant la migration, et en particulier votre classe DBContext et vos classes POCO.");
WriteLine("\nDans cet exemple, une base de données SQLServer est créée et en particulier la table Nounours.mdf");
}
ReadLine();
}
}
}

@ -1,21 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<AssemblyName>ex_042_009_EF_CF_One_to_Many_FluentAPI</AssemblyName>
<OutputType>Exe</OutputType>
<PackageId>ex_042_009_EF_CF_One_to_Many_FluentAPI</PackageId>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>

@ -25,7 +25,7 @@ namespace ex_042_011_EF_CF_Many_to_Many_FluentAPI
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ex_042_010_EF_CF_Many_to_Many.mdf;Trusted_Connection=True;");
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ex_042_011_EF_CF_Many_to_Many_FluentAPI.mdf;Trusted_Connection=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)

@ -137,7 +137,7 @@
<Content Include="Assets\Square44x44Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Assets\StoreLogo.png" />
<Content Include="Assets\Wide3.0.150Logo.scale-200.png" />
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">

@ -20,17 +20,21 @@ namespace ex_051_003_gestion_exceptions
}
//l'exception est wrappée dans une AggregateException
//(l'intérêt est plus visible dans le cas de la programmation en parallèle)
catch (AggregateException aggrEx)
catch(DivideByZeroException exc)
{
if (aggrEx.InnerException is DivideByZeroException)
{
Console.WriteLine("division par zéro");
}
else
{
throw;
}
}
//catch (AggregateException aggrEx)
//{
// if (aggrEx.InnerException is DivideByZeroException)
// {
// Console.WriteLine("division par zéro");
// }
// else
// {
// throw;
// }
//}
}
}
}

@ -6,9 +6,9 @@
<StartWorkingDirectory>$(MSBuildProjectDirectory)</StartWorkingDirectory>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.15" />
</ItemGroup>
</Project>

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
@ -7,12 +7,12 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.15">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.15" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ex_041_004_TestingInMemory\ex_041_004_TestingInMemory.csproj" />

@ -241,13 +241,13 @@ cd .\p08_BDD_EntityFramework\ex_041_004_ConsoleTests_w_SQLite
* ```dotnet tool install --global dotnet-ef --version 3.0.0``` si vous vous utiliser spécifiquement .NET Core 3.0.
* 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 :
```
dotnet ef database update --project ../ex_041_004_TestingInMemory
dotnet ef database update --context SQLiteNounoursContext
```
* Génération et exécution
Vous pouvez maintenant générer et exécuter l'exemple **ex_041_004_ConsoleTests_w_SQLite**.

@ -1,11 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Migrations\**" />
<EmbeddedResource Remove="Migrations\**" />
<None Remove="Migrations\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.15" />
</ItemGroup>
</Project>

@ -7,11 +7,17 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.15" />
</ItemGroup>
<ItemGroup>

@ -7,11 +7,17 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.15" />
</ItemGroup>
<ItemGroup>

@ -6,12 +6,6 @@
<StartWorkingDirectory>$(MSBuildProjectDirectory)</StartWorkingDirectory>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Migrations\**" />
<EmbeddedResource Remove="Migrations\**" />
<None Remove="Migrations\**" />
</ItemGroup>
<ItemGroup>
<None Remove="ex_042_012_OneToOne_conventions.Nounours.db" />
</ItemGroup>

Loading…
Cancel
Save