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 64c5432..0000000
Binary files a/Sources/Tests/DbConsole/projet.ToutesTables.db and /dev/null differ
diff --git a/Sources/Tests/ModelTest/ModelTest.csproj b/Sources/Tests/ModelTest/ModelTest.csproj
index c5d1063..b5d6946 100644
--- a/Sources/Tests/ModelTest/ModelTest.csproj
+++ b/Sources/Tests/ModelTest/ModelTest.csproj
@@ -9,7 +9,10 @@
+
+
+
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);
}
}