Tutorial: Agregar validación a clases de entidad
La validación de datos es el proceso de confirmar que los valores especificados en los objetos de datos cumplen las restricciones en el esquema de un objeto, además de las reglas establecidas para la aplicación. Se recomienda realizar la validación de datos antes de enviar las actualizaciones a la base de datos subyacente para reducir tanto los errores como el número de viajes de ida y vuelta entre una aplicación y la base de datos.
Object Relational Designer proporciona métodos parciales que permiten a los usuarios extender el código generado por el diseñador que se ejecuta durante las inserciones, actualizaciones y eliminaciones de entidades completas, así como durante y después de las modificaciones de columnas individuales.
En este tutorial se proporcionan instrucciones paso a paso para agregar la validación a las clases de entidad de LINQ to SQL y se amplía el tema Tutorial: Crear clases de LINQ to SQL (Object Relational Designer).
En este tutorial, aprenderá a realizar las siguientes tareas:
Agregar validación para los cambios realizados en los datos de una columna concreta.
Agregar validación para las actualizaciones de una entidad completa.
Requisitos previos
Para realizar este tutorial, necesita lo siguiente:
El proyecto creado en Tutorial: Crear clases de LINQ to SQL (Object Relational Designer).
Acceso a la base de datos de ejemplo Northwind. Para obtener más información, consulte Cómo: Instalar bases de datos de ejemplo.
Nota
Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.
Abrir la solución ORDesignerWalkthrough
Para abrir la solución ORDesignerWalkthrough
En el menú Archivo, elija Abrir, haga clic en Proyecto o solución y, a continuación, navegue a la ubicación del archivo ORDesignerWalkthrough.sln.
Nota
El archivo ORDesignerWalkthrough.sln se crea en el tema Tutorial: Crear clases de LINQ to SQL (Object Relational Designer) y es un requisito previo para poder completar este tutorial. Complete el tema Tutorial: Crear clases de LINQ to SQL (Object Relational Designer) y, si aún no lo ha hecho, guarde la solución cuando termine.
Agregar validación para los cambios realizados en el valor de una columna concreta
En esta parte del tutorial, va a agregar lógica de validación a la columna RequiredDate de un pedido. Va a agregar código para comprobar que el valor de RequiredDate es anterior a la fecha actual. Dado que la validación se realiza en la definición de clase real (en lugar de la interfaz de usuario), se genera una excepción si el valor no puede validarse.
Para validar los datos mientras se modifican los valores de una columna
Abra el archivo Northwind.dbml en el Object Relational Designer. (Haga doble clic en el archivo Northwind.dbml en el Explorador de soluciones.)
Dado que agrega validación al valor de RequiredDate de un pedido, haga clic con el botón secundario del mouse en la clase Order del diseñador y, a continuación, haga clic en Ver código.
El Editor de código se abre con una clase parcial para el pedido.
Coloque el cursor en la clase Order parcial.
Para proyectos de Visual Basic:
Expanda la lista Nombre de método (el cuadro combinado con el texto (Declaraciones)).
Haga clic en OnRequiredDateChanging.
Se agrega a la clase Order parcial un método OnRequiredDateChanging.
Agregue el código siguiente al método OnRequiredDataChanging para asegurar que el valor especificado para RequiredDate no sea anterior a la fecha actual:
If value.HasValue Then If value < Today Then Throw New Exception("Required Date cannot be in the past") End If End If
Para proyectos de C#:
Agregue el código siguiente a la clase Order parcial para asegurar que el valor especificado para RequiredDate no sea anterior a la fecha actual:
partial void OnRequiredDateChanging(System.DateTime? value) { if (value < System.DateTime.Today) { throw new System.Exception("Required Date cannot be in the past"); } }
Probar la aplicación
Para probar la lógica de validación, es preciso ejecutar la aplicación y escribir valores que generen un error en la validación.
Para probar la aplicación
Presione F5.
En la cuadrícula que muestra los pedidos, cambie el valor de RequiredDate de un pedido a una fecha anterior a la fecha actual y salga del registro para que se acepte el cambio.
El nuevo valor genera un error en la validación y se produce la excepción esperada.
Cierre el formulario. (Detenga la depuración.)
Controlar el error de validación en el control DataGridView
Al probar la aplicación, apareció un mensaje de error de DataGridView en el que se indicaba a los desarrolladores que controlasen el evento DataError. En el siguiente procedimiento se muestra cómo controlar este evento.
Para controlar el error de validación en el control DataGridView
Abra Form1 en el Editor de código.
Seleccione OrdersDataGridView.
Cree un controlador de eventos para el evento DataError.
Agregue código para mostrar el error. El controlador de eventos será similar al siguiente:
Private Sub OrdersDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles OrdersDataGridView.DataError MessageBox.Show(e.Exception.Message) End Sub
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) { MessageBox.Show(e.Exception.Message); }
Agregar validación para las actualizaciones de una clase de entidad
Además de comprobar los valores durante los cambios, puede validar los datos cuando se intenta actualizar una clase de entidad completa. La validación durante un intento de actualización permite comparar los valores de varias columnas si lo requieren las reglas del negocio. Por ejemplo, en el procedimiento siguiente se muestra cómo validar que se está usando la compañía de distribución correcta si los gastos de carga son menores que un límite establecido.
Para validar datos durante la actualización de una clase de entidad
Abra el archivo Northwind.dbml en el Object Relational Designer. (Haga doble clic en el archivo Northwind.dbml en el Explorador de soluciones.)
Dado que agrega validación a la actualización de una clase Order completa, los métodos parciales a los que debe obtener acceso se encuentran en la clase DataContext generada (NorthwindDataContext). Haga clic con el botón secundario del mouse en un área vacía de Object Relational Designer y, a continuación, haga clic en Ver código.
El Editor de código se abre en la clase parcial para NorthwindDataContext.
Coloque el cursor en la clase parcial NorthwindDataset.
Para proyectos de Visual Basic:
Expanda la lista Nombre de método (el cuadro combinado con el texto (Declaraciones)).
Haga clic en UpdateOrder.
Se agrega un método UpdateOrder a la clase parcial NorthwindDataContext.
Federal Shipping no entrega si el valor de Freight es menor que 10. Por consiguiente, agregue el código siguiente al método UpdateOrder para asegurar que el valor especificado para ShipVia no sea Federal Shipping si el valor de Freight es menor que 10:
If (instance.ShipVia = 3) And (instance.Freight < 10) Then Dim ErrorMessage As String = "Federal Shipping " & _ "does not deliver for less than 10. " & _ "You must use a different shipper." Throw New Exception(ErrorMessage) End If
Para proyectos de C#:
Agregue el código siguiente a la clase parcial NorthwindDataContext para asegurar que el valor especificado para ShipVia no sea Federal Shipping si el valor de Freight es menor que 10:
partial void UpdateOrder(Order instance) { if ((instance.ShipVia == 3) && (instance.Freight < 10)) { string ErrorMessage = "Federal Shipping " + "does not deliver for less than 10. " + "You must use a different shipper."; throw new System.Exception(ErrorMessage); } }
Probar la aplicación
Para probar la lógica de validación, ejecute la aplicación y especifique valores que generen un error en la validación.
Para probar la aplicación
Presione F5.
En la cuadrícula que muestra los pedidos, busque un registro en el que el valor de ShipVia sea 3. Cambie el valor de Freight a 5 y salga del registro para que se acepte el cambio.
Dado que la validación no se realiza hasta que el registro se envía realmente para su actualización, aún no se produce un error en la validación.
Haga clic en el botón Guardar del formulario.
En este momento, se genera un error en la validación y se produce la excepción.
Cierre el formulario. (Detenga la depuración.)
Pasos siguientes
Dependiendo de los requisitos de la aplicación, hay varios pasos que se pueden realizar después de agregar validación a las clases de entidad de LINQ to SQL. Podría realizar la siguiente mejora en esta aplicación:
- Crear más consultas LINQ para ordenar y filtrar los datos. Para obtener más información, vea Consultas en LINQ to SQL.
Vea también
Tareas
Tutorial: Crear clases de LINQ to SQL (Object Relational Designer)
Conceptos
Novedades en el desarrollo de aplicaciones de datos