Files
Elecciones-2025/Elecciones-Web/src/Elecciones.Database/EleccionesDbContext.cs

54 lines
2.4 KiB
C#
Raw Normal View History

// src/Elecciones.Database/EleccionesDbContext.cs
using Elecciones.Database.Entities;
using Microsoft.EntityFrameworkCore;
namespace Elecciones.Database;
public class EleccionesDbContext(DbContextOptions<EleccionesDbContext> options) : DbContext(options)
{
public DbSet<AgrupacionPolitica> AgrupacionesPoliticas { get; set; }
public DbSet<AmbitoGeografico> AmbitosGeograficos { get; set; }
public DbSet<ResultadoVoto> ResultadosVotos { get; set; }
public DbSet<EstadoRecuento> EstadosRecuentos { get; set; }
2025-08-15 17:31:51 -03:00
public DbSet<ProyeccionBanca> ProyeccionesBancas { get; set; }
public DbSet<Telegrama> Telegramas { get; set; }
public DbSet<ResumenVoto> ResumenesVotos { get; set; }
public DbSet<EstadoRecuentoGeneral> EstadosRecuentosGenerales { get; set; }
public DbSet<CategoriaElectoral> CategoriasElectorales { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
2025-08-17 20:08:38 -03:00
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ResultadoVoto>()
.HasIndex(r => new { r.AmbitoGeograficoId, r.AgrupacionPoliticaId })
.IsUnique();
2025-08-17 20:08:38 -03:00
// Precisión para los campos de porcentaje en EstadoRecuento
modelBuilder.Entity<EstadoRecuento>(entity =>
{
entity.Property(e => e.MesasTotalizadasPorcentaje).HasPrecision(5, 2);
entity.Property(e => e.ParticipacionPorcentaje).HasPrecision(5, 2);
2025-08-17 20:08:38 -03:00
entity.Property(e => e.VotosNulosPorcentaje).HasPrecision(18, 4);
entity.Property(e => e.VotosEnBlancoPorcentaje).HasPrecision(18, 4);
entity.Property(e => e.VotosRecurridosPorcentaje).HasPrecision(18, 4);
});
2025-08-17 20:08:38 -03:00
// Precisión para el campo de porcentaje en ResultadoVoto
modelBuilder.Entity<ResultadoVoto>()
.Property(e => e.PorcentajeVotos).HasPrecision(18, 4);
2025-08-15 17:31:51 -03:00
modelBuilder.Entity<ResumenVoto>()
2025-08-17 20:08:38 -03:00
.Property(e => e.VotosPorcentaje).HasPrecision(5, 2);
2025-08-15 17:31:51 -03:00
modelBuilder.Entity<EstadoRecuentoGeneral>(entity =>
2025-08-17 20:08:38 -03:00
{
// 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);
});
}
}