diff --git a/Sources/DTO/ChampionDTO.cs b/Sources/DTO/ChampionDTO.cs
index 1e359a8..b56e6a1 100644
--- a/Sources/DTO/ChampionDTO.cs
+++ b/Sources/DTO/ChampionDTO.cs
@@ -25,12 +25,15 @@ namespace DTO
//public ChampionClass Class { get; set; }
public string Icon { get; set; }
+<<<<<<< Updated upstream
///
/// pour plus tard ?
///
//public ImmutableHashSet Skills { get; set; }
//public ICollection Skills { get; set; }
+=======
+>>>>>>> Stashed changes
public bool equals(ChampionDTO other)
{
diff --git a/Sources/EntityFramework/ChampionEntity.cs b/Sources/EntityFramework/ChampionEntity.cs
index f55a7f0..d2a59a0 100644
--- a/Sources/EntityFramework/ChampionEntity.cs
+++ b/Sources/EntityFramework/ChampionEntity.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
+using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
@@ -31,12 +32,17 @@ namespace EntityFramework
//public ImmutableHashSet Skills => skills.ToImmutableHashSet();
//private HashSet skills = new HashSet();
- private ICollection Skills { get; set; }
+<<<<<<< Updated upstream
+ private ICollection Skills { get; set; }
+=======
+ public ICollection Skills { get; set; }
+>>>>>>> Stashed changes
public ChampionEntity(string name,string bio,string icon) {
this.Name = name;
this.Bio = bio;
this.Icon = icon;
+ Skills= new List();
}
public override string ToString()
@@ -46,10 +52,16 @@ namespace EntityFramework
- public void AddSkill(Skill skill)
+ public void AddSkill(SkillEntity skill)
+<<<<<<< Updated upstream
=> this.Skills.Add(skill);
- public bool RemoveSkill(Skill skill)
+ public bool RemoveSkill(SkillEntity skill)
+=======
+ => Skills.Add(skill);
+
+ public void RemoveSkill(Skill skill)
+>>>>>>> Stashed changes
=> Skills.Remove(skill);
}
}
diff --git a/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.Designer.cs b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.Designer.cs
new file mode 100644
index 0000000..94bb55c
--- /dev/null
+++ b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.Designer.cs
@@ -0,0 +1,85 @@
+//
+using System;
+using EntityFramework;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace EntityFramework.Migrations
+{
+ [DbContext(typeof(LoLDbContext))]
+ [Migration("20230301152530_SkillMigration")]
+ partial class SkillMigration
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "7.0.2");
+
+ modelBuilder.Entity("EntityFramework.ChampionEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Bio")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("string")
+ .HasColumnName("Bio");
+
+ b.Property("Icon")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Champion", (string)null);
+ });
+
+ modelBuilder.Entity("EntityFramework.Skill", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("ChampionEntityId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Type")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Name");
+
+ b.HasIndex("ChampionEntityId");
+
+ b.ToTable("Skill");
+ });
+
+ modelBuilder.Entity("EntityFramework.Skill", b =>
+ {
+ b.HasOne("EntityFramework.ChampionEntity", null)
+ .WithMany("Skills")
+ .HasForeignKey("ChampionEntityId");
+ });
+
+ modelBuilder.Entity("EntityFramework.ChampionEntity", b =>
+ {
+ b.Navigation("Skills");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.cs b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.cs
new file mode 100644
index 0000000..ce0154c
--- /dev/null
+++ b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.cs
@@ -0,0 +1,63 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace EntityFramework.Migrations
+{
+ ///
+ public partial class SkillMigration : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Champion",
+ columns: table => new
+ {
+ Id = table.Column(type: "INTEGER", nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Name = table.Column(type: "TEXT", maxLength: 50, nullable: false),
+ Bio = table.Column(type: "string", maxLength: 500, nullable: false),
+ Icon = table.Column(type: "TEXT", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Champion", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Skill",
+ columns: table => new
+ {
+ Name = table.Column(type: "TEXT", nullable: false),
+ Type = table.Column(type: "INTEGER", nullable: false),
+ Description = table.Column(type: "TEXT", nullable: false),
+ ChampionEntityId = table.Column(type: "INTEGER", nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Skill", x => x.Name);
+ table.ForeignKey(
+ name: "FK_Skill_Champion_ChampionEntityId",
+ column: x => x.ChampionEntityId,
+ principalTable: "Champion",
+ principalColumn: "Id");
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Skill_ChampionEntityId",
+ table: "Skill",
+ column: "ChampionEntityId");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Skill");
+
+ migrationBuilder.DropTable(
+ name: "Champion");
+ }
+ }
+}
diff --git a/Sources/EntityFramework/Migrations/LoLDbContextModelSnapshot.cs b/Sources/EntityFramework/Migrations/LoLDbContextModelSnapshot.cs
new file mode 100644
index 0000000..0abeee1
--- /dev/null
+++ b/Sources/EntityFramework/Migrations/LoLDbContextModelSnapshot.cs
@@ -0,0 +1,82 @@
+//
+using System;
+using EntityFramework;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace EntityFramework.Migrations
+{
+ [DbContext(typeof(LoLDbContext))]
+ partial class LoLDbContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "7.0.2");
+
+ modelBuilder.Entity("EntityFramework.ChampionEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Bio")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("string")
+ .HasColumnName("Bio");
+
+ b.Property("Icon")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Champion", (string)null);
+ });
+
+ modelBuilder.Entity("EntityFramework.Skill", b =>
+ {
+ b.Property("Name")
+ .HasColumnType("TEXT");
+
+ b.Property("ChampionEntityId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Type")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Name");
+
+ b.HasIndex("ChampionEntityId");
+
+ b.ToTable("Skill");
+ });
+
+ modelBuilder.Entity("EntityFramework.Skill", b =>
+ {
+ b.HasOne("EntityFramework.ChampionEntity", null)
+ .WithMany("Skills")
+ .HasForeignKey("ChampionEntityId");
+ });
+
+ modelBuilder.Entity("EntityFramework.ChampionEntity", b =>
+ {
+ b.Navigation("Skills");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Sources/EntityFramework/Program.cs b/Sources/EntityFramework/Program.cs
index d3d785d..65ef614 100644
--- a/Sources/EntityFramework/Program.cs
+++ b/Sources/EntityFramework/Program.cs
@@ -18,4 +18,20 @@ using( var context = new LoLDbContext())
{
Console.WriteLine("Not Found");
}
+
+ //Test BDD Skills
+ ChampionEntity champSkill = new ChampionEntity("nomSkill", "bioSkill", "iconSkill");
+
+ SkillEntity s1 = new SkillEntity("Skill1", "desc", SkillType.Unknown);
+ SkillEntity s2 = new SkillEntity("Skill2", "desc2", SkillType.Ultimate);
+ SkillEntity s3 = new SkillEntity("Skill3", "desc3", SkillType.Passive);
+
+ champSkill.AddSkill(s1);
+ champSkill.AddSkill(s2);
+ champSkill.AddSkill(s3);
+
+ context.Add(champSkill);
+
+ context.SaveChanges();
+
}
diff --git a/Sources/EntityFramework/Skill.cs b/Sources/EntityFramework/SkillEntity.cs
similarity index 81%
rename from Sources/EntityFramework/Skill.cs
rename to Sources/EntityFramework/SkillEntity.cs
index bf9934e..d370410 100644
--- a/Sources/EntityFramework/Skill.cs
+++ b/Sources/EntityFramework/SkillEntity.cs
@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace EntityFramework
{
- public class Skill
+ public class SkillEntity
{
public SkillType Type { get; private set; }
@@ -41,5 +41,11 @@ namespace EntityFramework
}
}
private string description = "";
+
+ public SkillEntity(string Name, string Description, SkillType Type) {
+ this.name = Name;
+ this.Description = Description;
+ this.Type = Type;
+ }
}
}
diff --git a/Sources/EntityFramework/champion.db b/Sources/EntityFramework/champion.db
new file mode 100644
index 0000000..aa8a7ea
Binary files /dev/null and b/Sources/EntityFramework/champion.db differ