Principales respuestas
Evitar registros duplicados en C# y Entity framework

Pregunta
-
Buen dia tengo un formulario de registro y quiero verificar que el registro ingresado no exista y si exista muestre un mensaje de que ya existe.
Tengo mi función de registro
private void agregarCanal() { Canales c = new Canales(); c.Numero = txtAdd.Text; con.Canales.Add(c); con.SaveChanges(); }
Mi boton de Agregar
private void btnAgregar_Click(object sender, EventArgs e) { if (_flag == 1) { if (validarRegistro()) { agregarCanal(); MessageBox.Show("Numero de canal ingresado correctamente"); } else { MessageBox.Show("Ingrese un numero de canal"); } }
valido que el registro no vaya vacio
private bool validarRegistro()//metodo que valida que no se ingrese algo vacio { bool ok = true; if (txtAdd.Text == "") { ok = false; errorProvider1.SetError(txtAdd, ""); } return ok; }
¿como puedo validar que el registro no exista que lo inserte y si existe mande una alerta?
JavierLg12
Respuestas
-
Matías ya te ha mostrado como escribir una consulta contra el modelo de clases (contexto), ¿por qué abordas una solución basada en la clase DataTable siendo que accedes a los datos a través de la abstracción que ofrece Entity Framework?
- Método para validar existencia
private bool ValueExists(string _Value) { return con.Canales.Any(x => x.Numero.Equals(_Value)); //Reducir el ámbito del contexto }
- Invocar método
private void btnAgregar_Click(object sender, EventArgs e) { if (txtAdd.Text.Trim() == string.Empty) MessageBox.Show("Ingrese un número de canal"); else if (ValueExists(txtAdd.Text.Trim())) MessageBox.Show("El valor ya existe..."); else { agregarCanal(); //Quizá debas envolver la operación en un controlador de errores MessageBox.Show("Número de canal ingresado correctamente"); } }
- Marcado como respuesta Programador semi-jr domingo, 31 de diciembre de 2017 5:20
-
Muchas gracias Willams Morales
mi pregunta a llegado a la solución requerida.
Les agradezco a todos por el aporte saludos y feliz fin de año nuevo.
JavierLg12
- Marcado como respuesta Programador semi-jr domingo, 31 de diciembre de 2017 22:21
-
Buen dia Willams Morales
¿tengo una pequeña duda, como puedo validar existencia en mas de un campo?
JavierLg12
- Marcado como respuesta Programador semi-jr domingo, 31 de diciembre de 2017 22:20
Todas las respuestas
-
Hola.
public bool Existe(string numero) { var entity = dbContext.Canales.SingleOrDefault(c => c.Numero == numero); return entity != null; }
Offtopic: qué raro que un a variable string se llame "numero", ¿no?
Salu2
- Propuesto como respuesta Geovanny -Gio- Hernandez viernes, 29 de diciembre de 2017 9:07
-
Hola.
public bool Existe(string numero) { var entity = dbContext.Canales.SingleOrDefault(c => c.Numero == numero); return entity != null; }
Offtopic: qué raro que un a variable string se llame "numero", ¿no?
Salu2
si jejejeje
y como muestro un Mensaje de que el registro que ingreso ya existe?
JavierLg12
-
Hola JavierLg12
De acuerdo a tu consulta, puedes utilizar el siguiente código ejemplo que te voy a compartir que puede serte muy útil.
if (this.IsNuevo)
// Evitar que se registren registros duplicados
{
DataTable tabla = NPais.Mostrar();
if (tabla.Rows.Count >= 0)
{
repetido = false;
foreach (DataRow fila in tabla.Rows)
{
if (fila["nombre"].ToString() == txtPais.Text.Trim().ToUpper())
{
MessageBox.Show("El Registro ya Existe!!","Sistema de Ventas", MessageBoxButtons.OK, MessageBoxIcon.Information);
repetido = true;
break;
}
}
}
else
{
MessageBox.Show("No ha ingresado valores!!");
}
if(!repetido)
{
rpta = NPais.Insertar(this.txtPais.Text.Trim().ToUpper());
}
}
}
Quedamos al pendiente de cualquier actualización de tu parte.
Saludos Cordiales y feliz año nuevo.
Gracias por usar los foros de MSDN.
Pablo Rubio
_____Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
-
-
Hola JavierLg12
De acuerdo a tu consulta, puedes utilizar el siguiente código ejemplo que te voy a compartir que puede serte muy útil.
if (this.IsNuevo)
// Evitar que se registren registros duplicados
{
DataTable tabla = NPais.Mostrar();
if (tabla.Rows.Count >= 0)
{
repetido = false;
foreach (DataRow fila in tabla.Rows)
{
if (fila["nombre"].ToString() == txtPais.Text.Trim().ToUpper())
{
MessageBox.Show("El Registro ya Existe!!","Sistema de Ventas", MessageBoxButtons.OK, MessageBoxIcon.Information);
repetido = true;
break;
}
}
}
else
{
MessageBox.Show("No ha ingresado valores!!");
}
if(!repetido)
{
rpta = NPais.Insertar(this.txtPais.Text.Trim().ToUpper());
}
}
}
Quedamos al pendiente de cualquier actualización de tu parte.
Saludos Cordiales y feliz año nuevo.
Gracias por usar los foros de MSDN.
Pablo Rubio
_____Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
En mi caso no entiendo como implementar el ejemplo que me das en mi consulta, ahí algunas lineas que no comprendo como anteriormente lo comente, o que poner si me pudieran orientar a la solución sera de mas.
Saludos, Feliz fin de año y prospero año nuevo a todos
JavierLg12
-
Ya monte el codigo amigo me creo en mi clase Canales
internal static System.Data.DataTable Mostrar() { throw new NotImplementedException(); } internal static object Insertar(string p) { throw new NotImplementedException(); }
que le tengo que agregar o quitar o asi lo dejo.
y en formulario de registro me creo
public bool IsNuevo { get; set; } public bool repetido { get; set; } public object rpta { get; set; }
JavierLg12
-
Feliz fin de año y prospero año Pablo Rubio
Mira me quedo asi es correcto:
private void agregarCanal() { if (this.IsNuevo) // Evitar que se registren registros duplicados { DataTable dt = Canales.Mostrar(); if (dt.Rows.Count >= 0) { repetido = false; foreach (DataRow fila in dt.Rows) { if (fila["Numero"].ToString() == txtAdd.Text.Trim().ToUpper()) { MessageBox.Show("El Numero de canal ya Existe!!", "Registro de canales", MessageBoxButtons.OK, MessageBoxIcon.Information); repetido = true; break; } } } else { MessageBox.Show("Ingrese un numero de canal!!"); } if (!repetido) { rpta = Canales.Insertar(this.txtAdd.Text.Trim().ToUpper()); } } }
A un no lo corro pero ahi observaciones de tu parte amigo saludos.
JavierLg12
-
-
Matías ya te ha mostrado como escribir una consulta contra el modelo de clases (contexto), ¿por qué abordas una solución basada en la clase DataTable siendo que accedes a los datos a través de la abstracción que ofrece Entity Framework?
- Método para validar existencia
private bool ValueExists(string _Value) { return con.Canales.Any(x => x.Numero.Equals(_Value)); //Reducir el ámbito del contexto }
- Invocar método
private void btnAgregar_Click(object sender, EventArgs e) { if (txtAdd.Text.Trim() == string.Empty) MessageBox.Show("Ingrese un número de canal"); else if (ValueExists(txtAdd.Text.Trim())) MessageBox.Show("El valor ya existe..."); else { agregarCanal(); //Quizá debas envolver la operación en un controlador de errores MessageBox.Show("Número de canal ingresado correctamente"); } }
- Marcado como respuesta Programador semi-jr domingo, 31 de diciembre de 2017 5:20
-
Muchas gracias Willams Morales
mi pregunta a llegado a la solución requerida.
Les agradezco a todos por el aporte saludos y feliz fin de año nuevo.
JavierLg12
- Marcado como respuesta Programador semi-jr domingo, 31 de diciembre de 2017 22:21
-
Buen dia Willams Morales
¿tengo una pequeña duda, como puedo validar existencia en mas de un campo?
JavierLg12
- Marcado como respuesta Programador semi-jr domingo, 31 de diciembre de 2017 22:20
-
-
-
Estimado Programador semi-jr:
Este hilo ya ha tenido su resolución y tu pregunta es diferente, para que alguien te pueda ayudar, introduce un nuevo mensaje, con la misma.
Además si lo deseas hacer con Entity Framework, puedes hacerlo en los foros de MSDN., ya que la resolución será completamente diferente.
Si lo deseas hacer con SQL, este es tu sitio.
Gracias