Files
asistencia-desktop/Asistencia/Data/AppDbContext.cs
T

60 lines
1.9 KiB
C#

using Microsoft.EntityFrameworkCore;
using Asistencia.Models;
namespace Asistencia.Data;
public class AppDbContext : DbContext
{
public DbSet<Profesor> Profesores => Set<Profesor>();
public DbSet<Curso> Cursos => Set<Curso>();
public DbSet<CursoAbierto> CursosAbiertos => Set<CursoAbierto>();
public DbSet<DetalleContrato> DetallesContrato => Set<DetalleContrato>();
public DbSet<AsistenciaProfesor> AsistenciasProfesor => Set<AsistenciaProfesor>();
public DbSet<AsistenciaAlumno> AsistenciasAlumno => Set<AsistenciaAlumno>();
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<CursoAbierto>()
.HasOne(c => c.Curso)
.WithMany()
.HasForeignKey(c => c.IdCursos);
modelBuilder.Entity<DetalleContrato>()
.HasOne(d => d.CursoAbierto)
.WithMany()
.HasForeignKey(d => d.IdCursoAbierto);
modelBuilder.Entity<AsistenciaProfesor>()
.HasOne(a => a.CursoAbierto)
.WithMany()
.HasForeignKey(a => a.IdCursoAbierto);
modelBuilder.Entity<AsistenciaAlumno>()
.HasKey(a => new { a.IdDetalleContrato, a.FechaAsistencia });
modelBuilder.Entity<AsistenciaAlumno>()
.HasOne(a => a.DetalleContrato)
.WithMany()
.HasForeignKey(a => a.IdDetalleContrato);
SeedData(modelBuilder);
}
private static void SeedData(ModelBuilder modelBuilder)
{
}
}