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 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() .HasOne(s => s.Game) .WithMany(g => g.Scores) .HasForeignKey(s => s.GameId); modelBuilder.Entity() .HasOne(s => s.Player) .WithMany(p => p.Scores) .HasForeignKey(s => s.PlayerId); base.OnModelCreating(modelBuilder); } } }