From 9536d387454ed00cff67223916503f773bf2e0ff Mon Sep 17 00:00:00 2001
From: Pierre Ferreira
Date: Sat, 4 Feb 2023 11:02:32 +0100
Subject: [PATCH] =?UTF-8?q?:rocket:=20cr=C3=A9ation=20d'une=20branche=20pe?=
=?UTF-8?q?rso=20pour=20eviter=20les=20conflits,=20et=20mise=20sur=20le=20?=
=?UTF-8?q?depots=20du=20code=20:=20la=20creation=20de=20champion=20en=20b?=
=?UTF-8?q?ase=20de=20donn=C3=A9e=20avec=20nom,=20bio=20et=20icone=20:zap:?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
EF_LoL/EF_LoL.sln | 25 ++++++
EF_LoL/EF_LoL/ChampionDBContext.cs | 20 +++++
EF_LoL/EF_LoL/ChampionEntity.cs | 83 ++++++++++++++++++
EF_LoL/EF_LoL/EF_LoL.MyDataBase.db | Bin 0 -> 20480 bytes
EF_LoL/EF_LoL/EF_LoL.csproj | 21 +++++
.../20230204093038_MyMigration.Designer.cs | 42 +++++++++
.../Migrations/20230204093038_MyMigration.cs | 34 +++++++
.../ChampionDBContextModelSnapshot.cs | 39 ++++++++
EF_LoL/EF_LoL/MyDataBase.db | 0
EF_LoL/EF_LoL/Program.cs | 28 ++++++
10 files changed, 292 insertions(+)
create mode 100644 EF_LoL/EF_LoL.sln
create mode 100644 EF_LoL/EF_LoL/ChampionDBContext.cs
create mode 100644 EF_LoL/EF_LoL/ChampionEntity.cs
create mode 100644 EF_LoL/EF_LoL/EF_LoL.MyDataBase.db
create mode 100644 EF_LoL/EF_LoL/EF_LoL.csproj
create mode 100644 EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.Designer.cs
create mode 100644 EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.cs
create mode 100644 EF_LoL/EF_LoL/Migrations/ChampionDBContextModelSnapshot.cs
create mode 100644 EF_LoL/EF_LoL/MyDataBase.db
create mode 100644 EF_LoL/EF_LoL/Program.cs
diff --git a/EF_LoL/EF_LoL.sln b/EF_LoL/EF_LoL.sln
new file mode 100644
index 0000000..856e14b
--- /dev/null
+++ b/EF_LoL/EF_LoL.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.4.33213.308
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EF_LoL", "EF_LoL\EF_LoL.csproj", "{1AF6FE09-1ABF-4C51-8EC6-D2938876AAD2}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1AF6FE09-1ABF-4C51-8EC6-D2938876AAD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1AF6FE09-1ABF-4C51-8EC6-D2938876AAD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1AF6FE09-1ABF-4C51-8EC6-D2938876AAD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1AF6FE09-1ABF-4C51-8EC6-D2938876AAD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {1EA5AF67-3A7C-4B6B-BE39-837D683F5AB3}
+ EndGlobalSection
+EndGlobal
diff --git a/EF_LoL/EF_LoL/ChampionDBContext.cs b/EF_LoL/EF_LoL/ChampionDBContext.cs
new file mode 100644
index 0000000..8536a46
--- /dev/null
+++ b/EF_LoL/EF_LoL/ChampionDBContext.cs
@@ -0,0 +1,20 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EF_LoL
+{
+ public class ChampionDBContext : DbContext
+ {
+
+ //ChampionEntity champ1 = new ChampionEntity("Bob");
+ //ChampionEntity champ2 = new ChampionEntity("Fanta");
+
+ public DbSet ChampionEntity { get; set; }
+ protected override void OnConfiguring(DbContextOptionsBuilder options)
+ => options.UseSqlite("Data Source= EF_LoL.MyDataBase.db");
+ }
+}
diff --git a/EF_LoL/EF_LoL/ChampionEntity.cs b/EF_LoL/EF_LoL/ChampionEntity.cs
new file mode 100644
index 0000000..276445c
--- /dev/null
+++ b/EF_LoL/EF_LoL/ChampionEntity.cs
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Collections.ObjectModel;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EF_LoL
+{
+ public class ChampionEntity
+ {
+ //dotnet ef database update --context ChampionDBContext --project EF_LoL
+ [Key]
+ public string Name
+ {
+ get => name;
+ private init
+ {
+ if (string.IsNullOrWhiteSpace(value))
+ {
+ name = "Unknown";
+ return;
+ }
+ name = value;
+ }
+ }
+ private readonly string name = null!;
+
+ public string Bio
+ {
+ get => bio;
+ set
+ {
+ if (value == null)
+ {
+ bio = "";
+ return;
+ }
+ bio = value;
+ }
+ }
+ private string bio = "";
+
+ public string Icon { get; set; }
+
+ public ChampionEntity(string name, string icon = "", string bio = "")
+ {
+ Name = name;
+ Icon = icon;
+ Bio = bio;
+ }
+
+ // creer tabl avec db context et db set de champion
+ // puis ajout d'un nouveau champion
+ // pour ajouté un attribut : supprimer nos migrations et nos db
+
+ public override bool Equals(object? obj)
+ {
+ if (ReferenceEquals(obj, null)) return false;
+ if (ReferenceEquals(obj, this)) return true;
+ if (GetType() != obj.GetType()) return false;
+ return Equals(obj as ChampionEntity);
+ }
+
+ public override int GetHashCode()
+ => Name.GetHashCode() % 997;
+
+ public bool Equals(ChampionEntity? other)
+ => Name.Equals(other?.Name);
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder($"{Name}");
+ if (!string.IsNullOrWhiteSpace(bio))
+ {
+ sb.AppendLine($"\t{bio}");
+ }
+ return sb.ToString();
+ }
+ }
+}
diff --git a/EF_LoL/EF_LoL/EF_LoL.MyDataBase.db b/EF_LoL/EF_LoL/EF_LoL.MyDataBase.db
new file mode 100644
index 0000000000000000000000000000000000000000..2a3e632a6630951fe99233d4eba425f6d85e5d67
GIT binary patch
literal 20480
zcmeI%J#W)M7zgk>pWCJpSF==>kWf#ah=d|HK?+qD+{g&4c_THb8Ia{BhFUZ+IIc>@
z_B-$~_$XbNVSojR4Y4qCu1Fx3EwM)WKl16GyR*;sPhReP^t2Twfp{6kV?Pmfa+@d$
zc_aiOgvqid%RCgBsPl%b=|6c<%1G6_!?j;T<=15EqxOMcZ@n)%8T}A|00bZa0SG_<
z0uX=z1R(IA0+%-1&?^;sWheg0S%p~&>
zXBbT~L%dwsSJ(A!g_3YG3f@iMp2-!e=btChO*?Z#Z+H0t)-I3fhTdqmfNW;ljNTBS7tG%Gs?U`7N}sN9H(9!jn0S3^B|tehs{hYT^way
zf6*v%$-R%ao7
+
+
+ Exe
+ net6.0
+ enable
+ enable
+ $(MSBuildProjectDirectory)
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
diff --git a/EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.Designer.cs b/EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.Designer.cs
new file mode 100644
index 0000000..e4053f1
--- /dev/null
+++ b/EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.Designer.cs
@@ -0,0 +1,42 @@
+//
+using EF_LoL;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace EFLoL.Migrations
+{
+ [DbContext(typeof(ChampionDBContext))]
+ [Migration("20230204093038_MyMigration")]
+ partial class MyMigration
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "7.0.2");
+
+ modelBuilder.Entity("EF_LoL.ChampionEntity", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("Bio")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Icon")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Name");
+
+ b.ToTable("ChampionEntity");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.cs b/EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.cs
new file mode 100644
index 0000000..d92c2cf
--- /dev/null
+++ b/EF_LoL/EF_LoL/Migrations/20230204093038_MyMigration.cs
@@ -0,0 +1,34 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace EFLoL.Migrations
+{
+ ///
+ public partial class MyMigration : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "ChampionEntity",
+ columns: table => new
+ {
+ Name = table.Column(type: "TEXT", nullable: false),
+ Bio = table.Column(type: "TEXT", nullable: false),
+ Icon = table.Column(type: "TEXT", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_ChampionEntity", x => x.Name);
+ });
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "ChampionEntity");
+ }
+ }
+}
diff --git a/EF_LoL/EF_LoL/Migrations/ChampionDBContextModelSnapshot.cs b/EF_LoL/EF_LoL/Migrations/ChampionDBContextModelSnapshot.cs
new file mode 100644
index 0000000..4f2de8c
--- /dev/null
+++ b/EF_LoL/EF_LoL/Migrations/ChampionDBContextModelSnapshot.cs
@@ -0,0 +1,39 @@
+//
+using EF_LoL;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace EFLoL.Migrations
+{
+ [DbContext(typeof(ChampionDBContext))]
+ partial class ChampionDBContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "7.0.2");
+
+ modelBuilder.Entity("EF_LoL.ChampionEntity", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("Bio")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Icon")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Name");
+
+ b.ToTable("ChampionEntity");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/EF_LoL/EF_LoL/MyDataBase.db b/EF_LoL/EF_LoL/MyDataBase.db
new file mode 100644
index 0000000..e69de29
diff --git a/EF_LoL/EF_LoL/Program.cs b/EF_LoL/EF_LoL/Program.cs
new file mode 100644
index 0000000..1b49a9d
--- /dev/null
+++ b/EF_LoL/EF_LoL/Program.cs
@@ -0,0 +1,28 @@
+// See https://aka.ms/new-console-template for more information
+using EF_LoL;
+
+Console.WriteLine("Hello, World!");
+
+
+ChampionEntity chewie = new ChampionEntity("Chewbacca");
+ChampionEntity yoda = new ChampionEntity ("Yoda");
+ChampionEntity ewok = new ChampionEntity ("Ewok");
+
+using (var context = new ChampionDBContext())
+{
+ // Crée des Champion et les insère dans la base
+ Console.WriteLine("Creates and inserts new Champion");
+ context.ChampionEntity.Add(chewie);
+ context.Add(yoda);
+ context.Add(ewok);
+ context.SaveChanges();
+}
+
+using (var context = new ChampionDBContext())
+{
+ foreach (var n in context.ChampionEntity)
+ {
+ Console.WriteLine($"{n.Name} - {n.Bio} [ {n.Icon} ]");
+ }
+ context.SaveChanges();
+}