none
Como puedo evitar el duplicado de un campo en una entidad? RRS feed

  • Pregunta

  • Quiero evitar tener duplicados del campo Documento Nacional de Identidad como podría realizar esta acción ?

    public class Cliente { // PK - Primary Key public int Id { get; set; } [ForeignKey("DNI")] // Documento nacional de identidad public int DNI { get; set; } public string Nombre { get; set; } public string Apellido { get; set; } }

    [NotMapped]
    public class RegistroClienteViewModel
    {
        public int DNI { get; set; }
        public string Nombre { get; set; }
        public string Apellido { get; set; }
    }
    [HttpPost]
    public IActionResult Registro(RegistroClienteViewModel vm)
    {
        if (ModelState.IsValid)
        {
            Cliente ClienteModel = new Cliente()
            {
                DNI = vm.DNI,
                Apellido = vm.Apellido,
                Nombre = vm.Nombre
            };
            ctx.Add(ClienteModel);
            ctx.SaveChanges();
        }
    
        return View();
    }



    jueves, 30 de mayo de 2019 5:09

Respuestas

  • Puedes ponerle al campo una DataAnnotation de tipo [Unique]. O bien conseguir el mismo efecto creándole un índice de tipo único:

    [Index("IX_Cliente_DNI", IsUnique = true)] public int DNI....

    Sugerencia aparte: el DNI no debería ser "int" sino "string". Esto te permite guardar la letra de comprobación, y también guardar tarjetas de residente, dnis extranjeros, etc.

    jueves, 30 de mayo de 2019 6:02