Compartir a través de


Tutorial: Agregar validación a clases de entidad

Actualización: November 2007

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.

El Diseñador relacional de objetos (Diseñador R/O) 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 (Diseñador relacional de objetos).

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:

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

Agregar validación para los cambios realizados en los valores 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

  1. Abra el archivo Northwind.dbml en el Diseñador relacional de objetos. (Haga doble clic en el archivo Northwind.dbml en el Explorador de soluciones.)

  2. 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.

  3. Coloque el cursor en la clase Order parcial.

  4. Para proyectos de Visual Basic:

    1. Expanda la lista Nombre de método (el cuadro combinado con el texto (Declaraciones)).

    2. Haga clic en OnRequiredDateChanging.

    3. Se agrega a la clase Order parcial un método OnRequiredDateChanging.

    4. 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#:

    1. 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

  1. Presione F5.

  2. 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.

  3. 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

  1. Abra Form1 en el Editor de código.

  2. Seleccione OrdersDataGridView.

  3. Cree un controlador de eventos para el evento DataError.

  4. 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

  1. Abra el archivo Northwind.dbml en el Diseñador relacional de objetos. (Haga doble clic en el archivo Northwind.dbml en el Explorador de soluciones.)

  2. 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 del Diseñador relacional de objetos y, a continuación, haga clic en Ver código.

    El Editor de código se abre en la clase parcial para NorthwindDataContext.

  3. Coloque el cursor en la clase parcial NorthwindDataset.

  4. Para proyectos de Visual Basic:

    1. Expanda la lista Nombre de método (el cuadro combinado con el texto (Declaraciones)).

    2. Haga clic en UpdateOrder.

    3. Se agrega un método UpdateOrder a la clase parcial NorthwindDataContext.

    4. 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#:

    1. 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

  1. Presione F5.

  2. 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.

  3. 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.

  4. 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 (Diseñador relacional de objetos)

Conceptos

Lo nuevo en datos

Consultas en LINQ to SQL

Otros recursos

Diseñador relacional de objetos (Diseñador R/O)

LINQ to SQL

Tutoriales de LINQ to SQL