diff --git a/Documentation/Architecture_du_projet.drawio b/Documentation/Architecture_du_projet.drawio index 0826ace..dd46059 100644 --- a/Documentation/Architecture_du_projet.drawio +++ b/Documentation/Architecture_du_projet.drawio @@ -1 +1 @@ -7Vtdc6o4GP41Xtoh4UO8tK223emZ6dmenb3ciRAleyJhQ6y6v34TIAgEu24r4rbtDfIQSHieN+9HSAf2zWp7x1ESfWMhpgNohduBfTuA0B37QB4UsssR6LvjHFlyEuYY2APP5G9cgFaBrkmI01pDwRgVJKmDAYtjHIgahjhnm3qzBaP1XhO0xAbwHCBqor+TUEQ56sPRHr/HZBnpnoFXvN8K6cbFm6QRCtmmAtnTgX3DGRP5r9X2BlPFnuYlv2924Go5MI5jcdQNvzwsHTb9jqzR/W/ONV9/x3dDWIw2FTv9xjiUBBSnjIuILVmM6HSPXnO2jkOsHmvJs32bR8YSCQIJ/omF2BVqorVgEorEihZXU8HZz5JPWyL5KFTXB9+ugFK25gF+5ZW0lSC+xOK1V/dLEaT5YrbCgu/kjRxTJMhLfSCoMKNl2W7PtPxRkP0fiC+e+4LouujpiTPJmsSms0cyN2SR5pOon8qCMZeULVgstE6KVIHmmlEArBwoTdMugCeWEkFYLCGKF6IuyzzX9XGuAYrmmD7E9xhlXWaYnGgCkbhyTilKUjLPBqK64ThY81Qy+CtOcwuwSoVfMBd4+7rGpiTFDUPg+cVk2mkE6Om12c9OMC6wqDozNXhyKceGlHeDG3swGcf5gSOB11y2uL02VK2wfxxBB23pIGuwTpnbwhdo4cvuii7gGnxNY0HE7gLIAVbf7DiH/cINi1MmufnyDC2eYeQ0PIPTJqXfImVpA6e3dNMzlBpak6eHbgzeeZUp+8K8gSa/laPp7AIo6t8nQDNZ2HP0A6fiEljq3ZLMsPIs1l95VJu3hA5oeMsxMOWDVlsa5XSmHzC0OkMpkqmfX4RO16WJNziuNDkw885TmbjwEnRYEEpvGGU8G4EN5ghgWOpTuWJZ3nQyuxTl3l1UZrdOOEe7SoOEkViklSc/KaBWGI3c+oT2vcZqgHGL38yY3nDL2Lca9pYPfW99JQdvN0jPcOxlStyWRH05eJUOew2lRnZLfB61pcOgs3S4NdWTs5ZSSVInKYz3Kk0XVxmbed6t9JP9M9N/CgygQc03lCQkXl4CPb1bjuv2EbPNiNuM4ieMwMA+MgSDA9p1HYKh1wjBekmi0+CoaalMjNaK8CsqSolstxEVPX98XFQsp/jpi3vnMqbuKafqsdnyAb3OU+fAC/GZfRAP7X58pG03aw5wBh/p+J9X6Z6CodOsFN3iu3i3wdAsFWcUb78+px6Ihy48sARQi4feeeOhmdAU20q+FGzJaJrzDFjjIwv9DiX0DQkPqkdW2QacKuuKEhIgOqFkqXQRyuGW6KOSoKLanAnBVlqbaxT8XGauu7JEuMj+ZJOss0ma5BuFlAhInyzIVjn762I8t5EQaofRRDEBZ0EYwysilV4QaRD8KpA9wlmIBJIHhUtnONtEElbiDUmaMUmC4QbPhxFLhSxUhynm8iVUS8V8dvccpVhWDv5VogvZdy7sW5ZhD20prlaoZg8aPLk92B8vxdV5zIXvMrI/Xo57NPNun8Q7H29f3dHE95NyQgs01l+8c9QWmpXXYp0RZBLMiew4SxlkHyRJ8dMeqiqKihgYSLmya+UuUmUiIUqj0l7SBAUyzPzIbMXeh7IypJGVjDEzqpLhGQqUFH+EROYmgineZ0T1sEABvkpflqf60Aya8cj3W9OTK/3wakTyu0pQbLNO+P8nKNa/JihYDjH7PYROsh2+MDpURKoVqE6yEVDmneWUbFspP28y4rRp71FRFBA1I/D+WjN9YZin7pJvS7GXTRB9Xf5aquNDLK+u8CqbUPkz5Rjzx+YtDDOT9Io2J66tI2YxbnwOLyDDNTTNckXCMIsrm4gI/Czdg+pzw1FixJrTqN385ti6umq3fReBHYntmtspTyh24S8/n9Qy1jbduuv1LfXo/VJbB6Se0Wwntx9EasfdNcVrecjv+YFXySc0ADg+at2hbb/tGz6CytP9/8nkmdv+343s6T8= \ No newline at end of file +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 \ No newline at end of file diff --git a/Documentation/img/Architecture_du_projet.png b/Documentation/img/Architecture_du_projet.png index 44a5cac..73ace51 100644 Binary files a/Documentation/img/Architecture_du_projet.png and b/Documentation/img/Architecture_du_projet.png differ diff --git a/README.md b/README.md index 5b9b488..998d768 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,12 @@ Ce projet a été réalisé durant les cours de Entity framework et Consommation ## Architecture ![Image clique droit](/Documentation/img/Architecture_du_projet.png) +## Technologie +**Entity Framework Core** est un mappeur de base de données objet moderne pour .NET. Il prend en charge les requêtes LINQ, le suivi des modifications, les mises à jour et les migrations de schéma. +Donc comme vous l'aurez compris, l'EFLib va nous permettre la création, de vos tables et votre persistance. + +Notre **API** va relier le tout afin de pouvoir de mettre un intermédiaire entre la base de données et le client final. + ## Diagramme de classes du modèle ```mermaid classDiagram diff --git a/Sources/API/Mapping/ChampionMapper.cs b/Sources/API/Mapping/ChampionMapper.cs index 6ff3327..c204e4f 100644 --- a/Sources/API/Mapping/ChampionMapper.cs +++ b/Sources/API/Mapping/ChampionMapper.cs @@ -44,14 +44,14 @@ namespace API.Mapping }; }*/ - public static EntityChampion ToEF(this ChampionDto championDto) + public static EFChampion ToEF(this ChampionDto championDto) { if (championDto == null) { throw new ArgumentNullException("Dto null"); } - return new EntityChampion + return new EFChampion { Id = championDto.Id, Name = championDto.Name, diff --git a/Sources/ConsoleDB/ConsoleEF.csproj b/Sources/ConsoleDB/ConsoleEF.csproj index 74abf5c..9582133 100644 --- a/Sources/ConsoleDB/ConsoleEF.csproj +++ b/Sources/ConsoleDB/ConsoleEF.csproj @@ -5,6 +5,19 @@ net6.0 enable enable + $(MSBuildProjectDirectory) + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + diff --git a/Sources/ConsoleDB/Program.cs b/Sources/ConsoleDB/Program.cs index 3751555..bbe5f63 100644 --- a/Sources/ConsoleDB/Program.cs +++ b/Sources/ConsoleDB/Program.cs @@ -1,2 +1,32 @@ // See https://aka.ms/new-console-template for more information -Console.WriteLine("Hello, World!"); +// Console.WriteLine("Hello, World!"); + +using EFlib; +using StubLib; + +//StubData stub = new StubData(); +//stub.ChampionsMgr.GetItems(0, 5); + + +EFChampion boss1 = new EFChampion { Name = "bigBoss", Bio = "KingOfMetal", Icon = "vide" }; +EFChampion boss2 = new EFChampion { Name = "Soon", Bio = "Indomptable", Icon = "vide" }; +EFChampion boss3 = new EFChampion { Name = "doctorWho", Bio = "Le silence", Icon="vide" }; + +using (var context = new EFChampionContext()) +{ + // Crée des EFChampion et les insère dans la base + Console.WriteLine("Creates and inserts new EFChampion"); + context.Add(boss1); + context.Add(boss2); + context.Add(boss3); + context.SaveChanges(); +} + +using (var context = new EFChampionContext()) +{ + foreach (var n in context.Champions) + { + Console.WriteLine($"{n.Id} - {n.Name}"); + } + context.SaveChanges(); +} diff --git a/Sources/ConsoleDB/projet.dbloulou.db b/Sources/ConsoleDB/projet.dbloulou.db new file mode 100644 index 0000000..4fb65b1 Binary files /dev/null and b/Sources/ConsoleDB/projet.dbloulou.db differ diff --git a/Sources/EFlib/EntityChampion.cs b/Sources/EFlib/EFChampion.cs similarity index 93% rename from Sources/EFlib/EntityChampion.cs rename to Sources/EFlib/EFChampion.cs index bd01388..45f656d 100644 --- a/Sources/EFlib/EntityChampion.cs +++ b/Sources/EFlib/EFChampion.cs @@ -1,6 +1,6 @@ namespace EFlib { - public class EntityChampion + public class EFChampion { /**** Attributs ****/ public int Id { get; set; } diff --git a/Sources/EFlib/EFChampionContext.cs b/Sources/EFlib/EFChampionContext.cs new file mode 100644 index 0000000..c839dc9 --- /dev/null +++ b/Sources/EFlib/EFChampionContext.cs @@ -0,0 +1,41 @@ +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EFlib +{ + public class EFChampionContext : DbContext + { + + /**** Attributs ****/ + public DbSet Champions { get; set; } + + /**** Méthodes ****/ + public EFChampionContext() + { } + + public EFChampionContext(DbContextOptions options) + : base(options) + { } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (!optionsBuilder.IsConfigured) + { + optionsBuilder.UseSqlite($"Data Source=projet.dbloulou.db"); + } + var connection = new SqliteConnection("DataSource=:memory:"); + connection.Open(); + optionsBuilder.UseSqlite(connection); + } + /* + var options = new DbContextOptionsBuilder().UseSqlite($"Data Source=LeNomDe.MaBase.db").Options; + var context = new TheDbContext(options); //ou une autre classe dérivant de TheDbContext + await context.Database.EnsureCreatedAsync(); //pour créer la base si elle n'existe pas déjà + */ + } +} diff --git a/Sources/EFlib/Migrations/20230126084305_MyMigration.Designer.cs b/Sources/EFlib/Migrations/20230209074746_MyMigration.Designer.cs similarity index 92% rename from Sources/EFlib/Migrations/20230126084305_MyMigration.Designer.cs rename to Sources/EFlib/Migrations/20230209074746_MyMigration.Designer.cs index e0ff744..fe24406 100644 --- a/Sources/EFlib/Migrations/20230126084305_MyMigration.Designer.cs +++ b/Sources/EFlib/Migrations/20230209074746_MyMigration.Designer.cs @@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace EFlib.Migrations { [DbContext(typeof(SQLiteContext))] - [Migration("20230126084305_MyMigration")] + [Migration("20230209074746_MyMigration")] partial class MyMigration { /// @@ -19,7 +19,7 @@ namespace EFlib.Migrations #pragma warning disable 612, 618 modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); - modelBuilder.Entity("EFlib.Champion", b => + modelBuilder.Entity("EFlib.EFChampion", b => { b.Property("Id") .ValueGeneratedOnAdd() diff --git a/Sources/EFlib/Migrations/20230126084305_MyMigration.cs b/Sources/EFlib/Migrations/20230209074746_MyMigration.cs similarity index 100% rename from Sources/EFlib/Migrations/20230126084305_MyMigration.cs rename to Sources/EFlib/Migrations/20230209074746_MyMigration.cs diff --git a/Sources/EFlib/Migrations/SQLiteContextModelSnapshot.cs b/Sources/EFlib/Migrations/SQLiteContextModelSnapshot.cs index e8a5bd1..e01ab0f 100644 --- a/Sources/EFlib/Migrations/SQLiteContextModelSnapshot.cs +++ b/Sources/EFlib/Migrations/SQLiteContextModelSnapshot.cs @@ -16,7 +16,7 @@ namespace EFlib.Migrations #pragma warning disable 612, 618 modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); - modelBuilder.Entity("EFlib.Champion", b => + modelBuilder.Entity("EFlib.EFChampion", b => { b.Property("Id") .ValueGeneratedOnAdd() diff --git a/Sources/EFlib/SQLiteContext.cs b/Sources/EFlib/SQLiteContext.cs index cfbbdbe..89f60b3 100644 --- a/Sources/EFlib/SQLiteContext.cs +++ b/Sources/EFlib/SQLiteContext.cs @@ -11,7 +11,7 @@ namespace EFlib public class SQLiteContext : DbContext { /**** Attributs ****/ - public DbSet Champions { get; set; } + public DbSet Champions { get; set; } /**** Méthodes ****/ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) diff --git a/Sources/EFlib/SqlServerContext.cs b/Sources/EFlib/SqlServerContext.cs index c63cf7a..86f446f 100644 --- a/Sources/EFlib/SqlServerContext.cs +++ b/Sources/EFlib/SqlServerContext.cs @@ -10,7 +10,7 @@ namespace EFlib internal class SqlServerContext : DbContext { /**** Attributs ****/ - public DbSet Champions { get; set; } + public DbSet Champions { get; set; } /**** Méthodes ****/ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { diff --git a/Sources/EFlib/projet.dbloulou.db b/Sources/EFlib/projet.dbloulou.db index 187c04b..81497ee 100644 Binary files a/Sources/EFlib/projet.dbloulou.db and b/Sources/EFlib/projet.dbloulou.db differ