using Microsoft.EntityFrameworkCore; using Asistencia.Models; namespace Asistencia.Data; public class AppDbContext : DbContext { public DbSet Profesores => Set(); public DbSet Cursos => Set(); public DbSet CursosAbiertos => Set(); public DbSet DetallesContrato => Set(); public DbSet AsistenciasProfesor => Set(); public DbSet AsistenciasAlumno => Set(); public string DbPath { get; } public AppDbContext() { var folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var appFolder = Path.Combine(folder, "Asistencia"); Directory.CreateDirectory(appFolder); DbPath = Path.Combine(appFolder, "asistencia.db"); } protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlite($"Data Source={DbPath}"); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasOne(c => c.Curso) .WithMany() .HasForeignKey(c => c.IdCursos); modelBuilder.Entity() .HasOne(d => d.CursoAbierto) .WithMany() .HasForeignKey(d => d.IdCursoAbierto); modelBuilder.Entity() .HasOne(a => a.CursoAbierto) .WithMany() .HasForeignKey(a => a.IdCursoAbierto); modelBuilder.Entity() .HasKey(a => new { a.IdDetalleContrato, a.FechaAsistencia }); modelBuilder.Entity() .HasOne(a => a.DetalleContrato) .WithMany() .HasForeignKey(a => a.IdDetalleContrato); SeedData(modelBuilder); } private static void SeedData(ModelBuilder modelBuilder) { } }