using System; using System.Collections.Generic; using System.Data.Common; using System.Reflection.Emit; using Microsoft.EntityFrameworkCore; namespace EntityFrameWorkLib { public class TrekContext : DbContext { public DbSet Players { get; set; } public DbSet Game { get; set; } public DbSet Grille { get; set; } public DbSet Case { get; set; } public DbSet Turn { get; set; } public DbSet Score { get; set; } public TrekContext() { } public TrekContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder options) { if (!options.IsConfigured) { base.OnConfiguring(options.UseSqlite($"DataSource=projet.AllTables.db")); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { //Définition de la clé primaire de PlayerEntity modelBuilder.Entity().HasKey(n => n.PlayerId); //Définition de la clé primaire de GameEntity modelBuilder.Entity().HasKey(n => n.GameId); //Définition de la clé primaire de GrilleEntity modelBuilder.Entity().HasKey(n => n.GrilleId); //Définition de la clé primaire de CaseEntity modelBuilder.Entity().HasKey(n => n.CaseId); //Définition de la clé primaire de TurnEntity modelBuilder.Entity().HasKey(n => n.TurnId); //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(); //Configuration des clés primaires et étrangères pour la table Score 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) .HasForeignKey(s => s.GameId); modelBuilder.Entity() .HasOne(s => s.Player) .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); } } }