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); } }