From 87a98a5449957fa055b6e338f1456485ae3f945d Mon Sep 17 00:00:00 2001 From: Theo DUPIN Date: Fri, 24 Mar 2023 13:46:45 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20l'entit=C3=A9=20ParticipateEntity?= =?UTF-8?q?=20et=20d=C3=A9but=20des=20tests=20m=C3=A9thodes=20du=20model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/Tests/DbConsole/DbConsole.csproj | 1 + .../20230321112754_AllMigrations.Designer.cs | 182 ------------------ .../20230321112754_AllMigrations.cs | 150 --------------- .../Migrations/SQLiteContextModelSnapshot.cs | 179 ----------------- Sources/Tests/DbConsole/Program.cs | 59 +++++- ...compose.dcproj.EntityFrameworkCore.targets | 28 +++ Sources/Tests/DbConsole/projet.AllTables.db | 0 .../Tests/DbConsole/projet.ToutesTables.db | Bin 49152 -> 0 bytes Sources/Tests/ModelTest/ModelTest.csproj | 8 + Sources/Tests/ModelTest/Test_Stub.cs | 23 +++ Sources/Tests/ModelTest/UnitTest1.cs | 11 -- Sources/Trek12_Lib/CaseEntity.cs | 12 +- Sources/Trek12_Lib/GameEntity.cs | 6 +- Sources/Trek12_Lib/GrilleEntity.cs | 1 + Sources/Trek12_Lib/ParticipateEntity.cs | 29 +++ Sources/Trek12_Lib/PlayerEntity.cs | 3 +- Sources/Trek12_Lib/ScoreEntity.cs | 9 +- Sources/Trek12_Lib/TrekContext.cs | 20 +- 18 files changed, 170 insertions(+), 551 deletions(-) delete mode 100644 Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.Designer.cs delete mode 100644 Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.cs delete mode 100644 Sources/Tests/DbConsole/Migrations/SQLiteContextModelSnapshot.cs create mode 100644 Sources/Tests/DbConsole/docker-compose.dcproj.EntityFrameworkCore.targets create mode 100644 Sources/Tests/DbConsole/projet.AllTables.db delete mode 100644 Sources/Tests/DbConsole/projet.ToutesTables.db create mode 100644 Sources/Tests/ModelTest/Test_Stub.cs delete mode 100644 Sources/Tests/ModelTest/UnitTest1.cs create mode 100644 Sources/Trek12_Lib/ParticipateEntity.cs diff --git a/Sources/Tests/DbConsole/DbConsole.csproj b/Sources/Tests/DbConsole/DbConsole.csproj index ed572bd..3ea14d9 100644 --- a/Sources/Tests/DbConsole/DbConsole.csproj +++ b/Sources/Tests/DbConsole/DbConsole.csproj @@ -10,6 +10,7 @@ + diff --git a/Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.Designer.cs b/Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.Designer.cs deleted file mode 100644 index a180f95..0000000 --- a/Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.Designer.cs +++ /dev/null @@ -1,182 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace DbConsole.Migrations -{ - [DbContext(typeof(SQLiteContext))] - [Migration("20230321112754_AllMigrations")] - partial class AllMigrations - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); - - modelBuilder.Entity("EntityFrameWorkLib.CaseEntity", b => - { - b.Property("CaseId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Value") - .HasColumnType("INTEGER"); - - b.HasKey("CaseId"); - - b.ToTable("Case"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.GameEntity", b => - { - b.Property("GameId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Date") - .HasColumnType("TEXT"); - - b.Property("Duration") - .HasColumnType("TEXT"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("NbPlayers") - .HasColumnType("INTEGER"); - - b.HasKey("GameId"); - - b.ToTable("Game"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.GrilleEntity", b => - { - b.Property("GrilleId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("MaxChain") - .HasColumnType("INTEGER"); - - b.Property("MaxZone") - .HasColumnType("INTEGER"); - - b.Property("NbChains") - .HasColumnType("INTEGER"); - - b.Property("NbZones") - .HasColumnType("INTEGER"); - - b.HasKey("GrilleId"); - - b.ToTable("Grille"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.PlayerEntity", b => - { - b.Property("PlayerId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("MaxPoints") - .HasColumnType("INTEGER"); - - b.Property("MaxZone") - .HasColumnType("INTEGER"); - - b.Property("NbPlayed") - .HasColumnType("INTEGER"); - - b.Property("NbWin") - .HasColumnType("INTEGER"); - - b.Property("Pseudo") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("PlayerId"); - - b.ToTable("Players"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.ScoreEntity", b => - { - b.Property("ScoreId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("GameId") - .HasColumnType("INTEGER"); - - b.Property("NbPointsTotal") - .HasColumnType("INTEGER"); - - b.Property("PlayerId") - .HasColumnType("INTEGER"); - - b.HasKey("ScoreId"); - - b.HasIndex("GameId"); - - b.HasIndex("PlayerId"); - - b.ToTable("Score"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.TurnEntity", b => - { - b.Property("TurnId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DiceValue1") - .HasColumnType("INTEGER"); - - b.Property("DiceValue2") - .HasColumnType("INTEGER"); - - b.HasKey("TurnId"); - - b.ToTable("Turn"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.ScoreEntity", b => - { - b.HasOne("EntityFrameWorkLib.GameEntity", "Game") - .WithMany("Scores") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("EntityFrameWorkLib.PlayerEntity", "Player") - .WithMany("Scores") - .HasForeignKey("PlayerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Game"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.GameEntity", b => - { - b.Navigation("Scores"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.PlayerEntity", b => - { - b.Navigation("Scores"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.cs b/Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.cs deleted file mode 100644 index f30d7c3..0000000 --- a/Sources/Tests/DbConsole/Migrations/20230321112754_AllMigrations.cs +++ /dev/null @@ -1,150 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace DbConsole.Migrations -{ - /// - public partial class AllMigrations : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Case", - columns: table => new - { - CaseId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Value = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Case", x => x.CaseId); - }); - - migrationBuilder.CreateTable( - name: "Game", - columns: table => new - { - GameId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Duration = table.Column(type: "TEXT", nullable: false), - Date = table.Column(type: "TEXT", nullable: false), - NbPlayers = table.Column(type: "INTEGER", nullable: false), - Name = table.Column(type: "TEXT", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Game", x => x.GameId); - }); - - migrationBuilder.CreateTable( - name: "Grille", - columns: table => new - { - GrilleId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - NbChains = table.Column(type: "INTEGER", nullable: false), - NbZones = table.Column(type: "INTEGER", nullable: false), - MaxChain = table.Column(type: "INTEGER", nullable: false), - MaxZone = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Grille", x => x.GrilleId); - }); - - migrationBuilder.CreateTable( - name: "Players", - columns: table => new - { - PlayerId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Pseudo = table.Column(type: "TEXT", nullable: false), - NbWin = table.Column(type: "INTEGER", nullable: false), - NbPlayed = table.Column(type: "INTEGER", nullable: false), - MaxZone = table.Column(type: "INTEGER", nullable: false), - MaxPoints = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Players", x => x.PlayerId); - }); - - migrationBuilder.CreateTable( - name: "Turn", - columns: table => new - { - TurnId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - DiceValue1 = table.Column(type: "INTEGER", nullable: false), - DiceValue2 = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Turn", x => x.TurnId); - }); - - migrationBuilder.CreateTable( - name: "Score", - columns: table => new - { - ScoreId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - NbPointsTotal = table.Column(type: "INTEGER", nullable: false), - GameId = table.Column(type: "INTEGER", nullable: false), - PlayerId = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Score", x => x.ScoreId); - table.ForeignKey( - name: "FK_Score_Game_GameId", - column: x => x.GameId, - principalTable: "Game", - principalColumn: "GameId", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_Score_Players_PlayerId", - column: x => x.PlayerId, - principalTable: "Players", - principalColumn: "PlayerId", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Score_GameId", - table: "Score", - column: "GameId"); - - migrationBuilder.CreateIndex( - name: "IX_Score_PlayerId", - table: "Score", - column: "PlayerId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Case"); - - migrationBuilder.DropTable( - name: "Grille"); - - migrationBuilder.DropTable( - name: "Score"); - - migrationBuilder.DropTable( - name: "Turn"); - - migrationBuilder.DropTable( - name: "Game"); - - migrationBuilder.DropTable( - name: "Players"); - } - } -} diff --git a/Sources/Tests/DbConsole/Migrations/SQLiteContextModelSnapshot.cs b/Sources/Tests/DbConsole/Migrations/SQLiteContextModelSnapshot.cs deleted file mode 100644 index 5b4d8bc..0000000 --- a/Sources/Tests/DbConsole/Migrations/SQLiteContextModelSnapshot.cs +++ /dev/null @@ -1,179 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace DbConsole.Migrations -{ - [DbContext(typeof(SQLiteContext))] - partial class SQLiteContextModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); - - modelBuilder.Entity("EntityFrameWorkLib.CaseEntity", b => - { - b.Property("CaseId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Value") - .HasColumnType("INTEGER"); - - b.HasKey("CaseId"); - - b.ToTable("Case"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.GameEntity", b => - { - b.Property("GameId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Date") - .HasColumnType("TEXT"); - - b.Property("Duration") - .HasColumnType("TEXT"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("NbPlayers") - .HasColumnType("INTEGER"); - - b.HasKey("GameId"); - - b.ToTable("Game"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.GrilleEntity", b => - { - b.Property("GrilleId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("MaxChain") - .HasColumnType("INTEGER"); - - b.Property("MaxZone") - .HasColumnType("INTEGER"); - - b.Property("NbChains") - .HasColumnType("INTEGER"); - - b.Property("NbZones") - .HasColumnType("INTEGER"); - - b.HasKey("GrilleId"); - - b.ToTable("Grille"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.PlayerEntity", b => - { - b.Property("PlayerId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("MaxPoints") - .HasColumnType("INTEGER"); - - b.Property("MaxZone") - .HasColumnType("INTEGER"); - - b.Property("NbPlayed") - .HasColumnType("INTEGER"); - - b.Property("NbWin") - .HasColumnType("INTEGER"); - - b.Property("Pseudo") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("PlayerId"); - - b.ToTable("Players"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.ScoreEntity", b => - { - b.Property("ScoreId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("GameId") - .HasColumnType("INTEGER"); - - b.Property("NbPointsTotal") - .HasColumnType("INTEGER"); - - b.Property("PlayerId") - .HasColumnType("INTEGER"); - - b.HasKey("ScoreId"); - - b.HasIndex("GameId"); - - b.HasIndex("PlayerId"); - - b.ToTable("Score"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.TurnEntity", b => - { - b.Property("TurnId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DiceValue1") - .HasColumnType("INTEGER"); - - b.Property("DiceValue2") - .HasColumnType("INTEGER"); - - b.HasKey("TurnId"); - - b.ToTable("Turn"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.ScoreEntity", b => - { - b.HasOne("EntityFrameWorkLib.GameEntity", "Game") - .WithMany("Scores") - .HasForeignKey("GameId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("EntityFrameWorkLib.PlayerEntity", "Player") - .WithMany("Scores") - .HasForeignKey("PlayerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Game"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.GameEntity", b => - { - b.Navigation("Scores"); - }); - - modelBuilder.Entity("EntityFrameWorkLib.PlayerEntity", b => - { - b.Navigation("Scores"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Sources/Tests/DbConsole/Program.cs b/Sources/Tests/DbConsole/Program.cs index 04a07cb..e56eb10 100644 --- a/Sources/Tests/DbConsole/Program.cs +++ b/Sources/Tests/DbConsole/Program.cs @@ -1,6 +1,8 @@ using EntityFrameWorkLib; using Microsoft.EntityFrameworkCore; using Model; +using Stub; + /*GameEntity g1 = new GameEntity { @@ -17,7 +19,7 @@ using Model; MaxPoints = 0, };*/ -/*using (var context = new SQLiteContext()) +/*using (var context = new TrekContext()) { Console.WriteLine("Create and Insert new Player"); context.Add(p1); @@ -26,7 +28,7 @@ using Model; }*/ // Ajout de 3 Game, 1 Player "Jax" et 3 Scores totaux dans chaque Game attribués au Player par son Id -using (var context = new SQLiteContext()) +/*using (var context = new TrekContext()) { var firstGame = new GameEntity { @@ -58,15 +60,56 @@ using (var context = new SQLiteContext()) context.AddRange(firstGame, secondGame, thirdGame, newPlayer); context.AddRange(scores); context.SaveChanges(); -} +}*/ -public class SQLiteContext : TrekContext +/*using(var context = new TrekContext()) { - protected override void OnConfiguring(DbContextOptionsBuilder options) + var grille = new GrilleEntity { - if (!options.IsConfigured) + GrilleId = 1, + NbChains = 1, + NbZones = 4, + MaxChain = 20, + MaxZone = 25 + }; + + var case1 = new CaseEntity + { + CaseId = 1, + Value = 5, + GrilleId = 1 + }; + var case2 = new CaseEntity + { + CaseId = 2, + Value = 10, + GrilleId = 1 + }; + var case3 = new CaseEntity + { + CaseId = 3, + Value = 12, + GrilleId = 1 + }; + context.AddRange(grille, case1, case2, case3); + context.SaveChanges(); +*/ + +using (var context = new TrekContext()) +{ + var grille = new GrilleEntity + { + GrilleId = 1, + Cases = new List { - options.UseSqlite($"Data Source=projet.ToutesTables.db"); + new CaseEntity { CaseId = 1, GrilleId = 1, Value = 2 }, + new CaseEntity { CaseId = 2, GrilleId = 1, Value = 5 }, + new CaseEntity { CaseId = 3, GrilleId = 1, Value = 10 }, + new CaseEntity { CaseId = 4, GrilleId = 1, Value = 12 }, + new CaseEntity { CaseId = 5, GrilleId = 1, Value = 7 } } - } + }; + context.Add(grille); + context.SaveChanges(); } + \ No newline at end of file diff --git a/Sources/Tests/DbConsole/docker-compose.dcproj.EntityFrameworkCore.targets b/Sources/Tests/DbConsole/docker-compose.dcproj.EntityFrameworkCore.targets new file mode 100644 index 0000000..7d6485d --- /dev/null +++ b/Sources/Tests/DbConsole/docker-compose.dcproj.EntityFrameworkCore.targets @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/Tests/DbConsole/projet.AllTables.db b/Sources/Tests/DbConsole/projet.AllTables.db new file mode 100644 index 0000000..e69de29 diff --git a/Sources/Tests/DbConsole/projet.ToutesTables.db b/Sources/Tests/DbConsole/projet.ToutesTables.db deleted file mode 100644 index 64c543247440e85850ba0fbc5733411fe083c889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 zcmeI*%}?8A90zbeHslrRNfokMG|hE)0MXJUtU}spSz=gLaMHwWq0$r?;;oj_MA(i* z4?7el?GNbRvBOR~?_bz)nzl)trm1QVdy}@qp69V0a9$usg1(lM*iWA4=jZo%9w(TW z(0I7z__q3a*L`mJ>YDJ5Ad13AswxPAL~nES7AU~HgC?${|MQn zEnNFS{^r{K`IEWV*rhiW<$?s_~76?E90uX?})f9M|O(^#i@}<*h*@u;#W@EqW z+Ra+qdSSbj7T=pI)%BvOs}-ZH@2J{PB~7gws>Z8o>XH_<)t1dnLRnErFCKf-dTxi2 zvtuF$RR-dQh0Dhe(@8~9$k)WT_S!Z-F2Bo!(ahqxOwJ3~21tx=zRU z%&u>>hr>qIqFe?K8$I9W8tPbB<81df!tOO$RDQ=Y+Njp`%BI1)x}-%;YF*#Z>$*|W z8!9hkgVTSK4p~{>(&@04ij7jStegMWmX41oE26sEc$IVMR zz1fSvh!Z9Xux%Ya?RM<(A!vo*6dA6)H%`hgc!IJZJBqO|SQw zo_)}>JNx#)?rcnA;K`*94S$EWTz+{|3SLPR982 z49@~K$U7vdtgn-!D(_sgsc&pMUj*vjCywWL-4`PZ#d!Be);Z0mACn~&BOiRP8x!bE ziqZ71x!qQ8-+yeo-tZKmsa3>;^4U5O_u0_^%LoqQek?00bZa0SG_< z0uX=z1Rwx`X%*0-+-tTsTN*Wm# zXv1+mp9jM4|4-{QLBAmY0SG_<0uX=z1Rwwb2tWV=lMArxenXZ?Y8~R||5s>WkqQJL009U<00Izz00bZa0SG`~j6m@B z|0ja{xBOZ@8B+MD-c3tNlb}+D + + + runtime; build; native; contentfiles; analyzers; buildtransitive @@ -21,4 +24,9 @@ + + + + + diff --git a/Sources/Tests/ModelTest/Test_Stub.cs b/Sources/Tests/ModelTest/Test_Stub.cs new file mode 100644 index 0000000..d9a3e01 --- /dev/null +++ b/Sources/Tests/ModelTest/Test_Stub.cs @@ -0,0 +1,23 @@ +using EntityFrameWorkLib; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Model; +using NUnit.Framework.Internal; +using Stub; +using System.Data; +using static Stub.StubData; + +namespace ModelTest +{ + public class Test_Stub + { + [Fact] + public void Test_AddNewPlayer() + { + Player player = new Player("Jax"); + GameMode gameMode = new GameMode("Classique"); + DateOnly dateTime = new DateOnly(2023, 01, 01); + Game game = new Game(dateTime, player, gameMode, 1); + } + } +} \ No newline at end of file diff --git a/Sources/Tests/ModelTest/UnitTest1.cs b/Sources/Tests/ModelTest/UnitTest1.cs deleted file mode 100644 index ea0b6e4..0000000 --- a/Sources/Tests/ModelTest/UnitTest1.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace ModelTest -{ - public class UnitTest1 - { - [Fact] - public void Test1() - { - - } - } -} \ No newline at end of file diff --git a/Sources/Trek12_Lib/CaseEntity.cs b/Sources/Trek12_Lib/CaseEntity.cs index 8a42c6c..23bc675 100644 --- a/Sources/Trek12_Lib/CaseEntity.cs +++ b/Sources/Trek12_Lib/CaseEntity.cs @@ -1,14 +1,22 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EntityFrameWorkLib { - public class CaseEntity - { + public class CaseEntity + { + + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int CaseId { get; set; } + [ForeignKey("GrilleId")] + public int GrilleId { get; set; } + public GrilleEntity Grille { get; set; } public int Value { get; set; } } } diff --git a/Sources/Trek12_Lib/GameEntity.cs b/Sources/Trek12_Lib/GameEntity.cs index 2540edf..0878f9f 100644 --- a/Sources/Trek12_Lib/GameEntity.cs +++ b/Sources/Trek12_Lib/GameEntity.cs @@ -16,8 +16,8 @@ namespace EntityFrameWorkLib public TimeSpan Duration { get; set; } public DateOnly Date { get; set; } public int NbPlayers { get; set; } - public string Name { get; set; } - - public List Scores { get; set; } + public PlayerEntity Player { get; set; } + public string? Name { get; set; } + public List? Scores { get; set; } } } diff --git a/Sources/Trek12_Lib/GrilleEntity.cs b/Sources/Trek12_Lib/GrilleEntity.cs index 535437d..c7c5950 100644 --- a/Sources/Trek12_Lib/GrilleEntity.cs +++ b/Sources/Trek12_Lib/GrilleEntity.cs @@ -17,5 +17,6 @@ namespace EntityFrameWorkLib public int NbZones { get; set; } public int MaxChain { get; set; } public int MaxZone { get; set; } + public List Cases { get; set; } } } diff --git a/Sources/Trek12_Lib/ParticipateEntity.cs b/Sources/Trek12_Lib/ParticipateEntity.cs new file mode 100644 index 0000000..02b3f4a --- /dev/null +++ b/Sources/Trek12_Lib/ParticipateEntity.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EntityFrameWorkLib +{ + public class ParticipateEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [ForeignKey("GrilleId")] + public int GrilleId { get; set; } + public GrilleEntity Grille { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [ForeignKey("GameId")] + public int GameId { get; set; } + public GameEntity Game { get; set; } + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [ForeignKey("PlayerId")] + public int PlayerId { get; set; } + public PlayerEntity Player { get; set; } + } +} diff --git a/Sources/Trek12_Lib/PlayerEntity.cs b/Sources/Trek12_Lib/PlayerEntity.cs index df457dd..62cc19d 100644 --- a/Sources/Trek12_Lib/PlayerEntity.cs +++ b/Sources/Trek12_Lib/PlayerEntity.cs @@ -9,12 +9,11 @@ namespace EntityFrameWorkLib [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int PlayerId { get; set; } - public string Pseudo { get; set; } + public string? Pseudo { get; set; } public int NbWin { get; set; } public int NbPlayed { get; set; } public int MaxZone { get; set; } public int MaxPoints { get; set; } - public List Scores { get; set; } } } diff --git a/Sources/Trek12_Lib/ScoreEntity.cs b/Sources/Trek12_Lib/ScoreEntity.cs index 5fdd3be..d17482e 100644 --- a/Sources/Trek12_Lib/ScoreEntity.cs +++ b/Sources/Trek12_Lib/ScoreEntity.cs @@ -10,17 +10,12 @@ namespace EntityFrameWorkLib { public class ScoreEntity { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int ScoreId { get; set; } public int NbPointsTotal { get; set; } - - public int GameId { get; set; } [ForeignKey("GameId")] + public int GameId { get; set; } public GameEntity Game { get; set; } - - public int PlayerId { get; set; } [ForeignKey("PlayerId")] + public int PlayerId { get; set; } public PlayerEntity Player { get; set; } } } diff --git a/Sources/Trek12_Lib/TrekContext.cs b/Sources/Trek12_Lib/TrekContext.cs index d4f79bb..33c88bc 100644 --- a/Sources/Trek12_Lib/TrekContext.cs +++ b/Sources/Trek12_Lib/TrekContext.cs @@ -45,26 +45,23 @@ namespace EntityFrameWorkLib modelBuilder.Entity().HasKey(n => n.CaseId); //Définition de la clé primaire de TurnEntity modelBuilder.Entity().HasKey(n => n.TurnId); - //Définition de la clé primaire de ScoreEntity - modelBuilder.Entity().HasKey(n => n.ScoreId); //Définition du mode de generation de la clé : génération à l'insertion modelBuilder.Entity().Property(n => n.PlayerId).ValueGeneratedOnAdd(); modelBuilder.Entity().Property(n => n.GameId).ValueGeneratedOnAdd(); modelBuilder.Entity().Property(n => n.GrilleId).ValueGeneratedOnAdd(); modelBuilder.Entity().Property(n => n.CaseId).ValueGeneratedOnAdd(); modelBuilder.Entity().Property(n => n.TurnId).ValueGeneratedOnAdd(); - modelBuilder.Entity().Property(n => n.ScoreId).ValueGeneratedOnAdd(); //Configuration des clés primaires et étrangères pour la table Score - modelBuilder.Entity() - .HasKey(s => s.ScoreId); - modelBuilder.Entity() .HasKey(g => g.GameId); modelBuilder.Entity() .HasKey(p => p.PlayerId); + modelBuilder.Entity() + .HasKey(s => new { s.GameId, s.PlayerId }); + modelBuilder.Entity() .HasOne(s => s.Game) .WithMany(g => g.Scores) @@ -72,9 +69,18 @@ namespace EntityFrameWorkLib modelBuilder.Entity() .HasOne(s => s.Player) - .WithMany(p => p.Scores) + .WithMany() .HasForeignKey(s => s.PlayerId); + // Configuration de la relation "one-to-many" entre GrilleEntity et CaseEntity + modelBuilder.Entity() + .HasMany(g => g.Cases) + .WithOne(c => c.Grille) + .HasForeignKey(c => c.GrilleId); + + //Configuration des clés primaires et étrangères pour la table Participate + + base.OnModelCreating(modelBuilder); } }