// src/Elecciones.Database/EleccionesDbContext.cs using Elecciones.Database.Entities; using Microsoft.EntityFrameworkCore; namespace Elecciones.Database; public class EleccionesDbContext(DbContextOptions options) : DbContext(options) { public DbSet AgrupacionesPoliticas { get; set; } public DbSet AmbitosGeograficos { get; set; } public DbSet ResultadosVotos { get; set; } public DbSet EstadosRecuentos { get; set; } public DbSet ProyeccionesBancas { get; set; } public DbSet Telegramas { get; set; } public DbSet ResumenesVotos { get; set; } public DbSet EstadosRecuentosGenerales { get; set; } public DbSet CategoriasElectorales { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .HasIndex(r => new { r.AmbitoGeograficoId, r.AgrupacionPoliticaId }) .IsUnique(); // Precisión para los campos de porcentaje en EstadoRecuento modelBuilder.Entity(entity => { entity.Property(e => e.MesasTotalizadasPorcentaje).HasPrecision(5, 2); entity.Property(e => e.ParticipacionPorcentaje).HasPrecision(5, 2); entity.Property(e => e.VotosNulosPorcentaje).HasPrecision(18, 4); entity.Property(e => e.VotosEnBlancoPorcentaje).HasPrecision(18, 4); entity.Property(e => e.VotosRecurridosPorcentaje).HasPrecision(18, 4); }); // Precisión para el campo de porcentaje en ResultadoVoto modelBuilder.Entity() .Property(e => e.PorcentajeVotos).HasPrecision(18, 4); modelBuilder.Entity() .Property(e => e.VotosPorcentaje).HasPrecision(5, 2); modelBuilder.Entity(entity => { // Le decimos a EF que la combinación única es (AmbitoGeograficoId, CategoriaId) entity.HasKey(e => new { e.AmbitoGeograficoId, e.CategoriaId }); // Mantener la configuración de precisión entity.Property(e => e.MesasTotalizadasPorcentaje).HasPrecision(5, 2); entity.Property(e => e.ParticipacionPorcentaje).HasPrecision(5, 2); }); } }