Cómo: Agregar validación a clases de entidad
Validar las clases de entidad 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 validar los datos antes de enviar las actualizaciones a la base de datos subyacente para reducir los errores.De este modo, también se reduce 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.
[!NOTA]
En este tema se proporcionan los pasos básicos para agregar validación a las clases de entidad mediante el Object Relational Designer.Dado que podría resultar difícil seguir estos pasos genéricos sin hacer referencia a una clase de entidad concreta, se ha proporcionado un tutorial con datos reales.Para obtener instrucciones paso a paso detalladas sobre cómo configurar la validación mediante el Object Relational Designer, vea Tutorial: Agregar validación a clases de entidad.
Agregar validación para los cambios realizados en el valor de una columna concreta
En este procedimiento se muestra cómo validar datos cuando cambia el valor en una columna.Dado que la validación se realiza en la definición de clase (en lugar de la interfaz de usuario), se genera una excepción si el valor no puede validarse.Implemente un control de errores para el código en la aplicación que intenta cambiar los valores de columna.
Para validar los datos mientras se modifican los valores de una columna
Abra o cree un nuevo archivo de clases de LINQ to SQL (archivo .dbml) en el Object Relational Designer.(Haga doble clic en el archivo .dbml en el Explorador de soluciones.)
En Object Relational Designer, haga clic con el botón secundario del mouse en la clase para la que desee agregar validación y, a continuación, haga clic en Ver código.
El Editor de código se abre con una clase parcial para la clase de entidad seleccionada.
Coloque el cursor en la clase parcial.
Para proyectos de Visual Basic:
Expanda la lista Nombre de método.
Busque el método OnCOLUMNNAMEChanging para la columna a la que desee agregar validación.
Se agrega a la clase parcial un método OnCOLUMNNAMEChanging.
Agregue el código siguiente para comprobar, en primer lugar, que se ha especificado un valor y, a continuación, para asegurar que el valor especificado para la columna es aceptable para la aplicación.El argumento value contiene el valor propuesto, por lo que debe agregar la lógica para confirmar que es un valor válido:
If value.HasValue Then ' Add code to ensure that the value is acceptable. ' If value < 1 Then ' Throw New Exception("Invalid data!") ' End If End If
Para proyectos de C#:
Dado que los proyectos de C# no generan automáticamente los controladores de eventos, puede usar IntelliSense para crear los métodos parciales de cambio de columna.
Escriba partial y, a continuación, un espacio para obtener acceso a la lista de métodos parciales disponibles.Haga clic en el método de cambio de columna correspondiente a la columna a la que desee agregar validación.El código siguiente es similar al código que se genera al seleccionar un método parcial de cambio de columna:
partial void OnCOLUMNNAMEChanging(COLUMNDATATYPE value) { throw new System.NotImplementedException(); }
Agregar validación para las actualizaciones de una clase de entidad
Además de comprobar los valores durante los cambios, también 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.En el procedimiento siguiente se muestra cómo validar cuando se intenta actualizar una clase de entidad completa.
[!NOTA]
El código de validación para las actualizaciones de clases de entidad completas se ejecuta en la clase DataContext parcial (en lugar de la clase parcial de una clase de entidad concreta).
Para validar datos durante la actualización de una clase de entidad
Abra o cree un nuevo archivo de clases de LINQ to SQL (archivo .dbml) en el Object Relational Designer.(Haga doble clic en el archivo .dbml en el Explorador de soluciones.)
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 con una clase parcial para DataContext.
Coloque el cursor en la clase parcial para DataContext.
Para proyectos de Visual Basic:
Expanda la lista Nombre de método.
Haga clic en ActualizarENTITYCLASSNAME.
Se agrega a la clase parcial un método UpdateENTITYCLASSNAME.
Obtenga acceso a los valores de la columna mediante el argumento instance, como se muestra en el código siguiente:
If (instance.COLUMNNAME = x) And (instance.COLUMNNAME = y) Then Dim ErrorMessage As String = "Invalid data!" Throw New Exception(ErrorMessage) End If
Para proyectos de C#:
Dado que los proyectos de C# no generan automáticamente los controladores de eventos, puede usar IntelliSense para crear el método parcial UpdateCLASSNAME.
Escriba partial y, a continuación, un espacio para obtener acceso a la lista de métodos parciales disponibles.Haga clic en el método de actualización de la clase a la que desee agregar validación.El código siguiente es similar al código que se genera al seleccionar un método parcial UpdateCLASSNAME:
partial void UpdateCLASSNAME(CLASSNAME instance) { if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y)) { string ErrorMessage = "Invalid data!"; throw new System.Exception(ErrorMessage); } }