none
Validacion De Datos Entity Data Model, Entity Framework 4.1 RRS feed

  • Pregunta

  • Muy buen día, tratare de plantear de la mejor manera una duda que me surgio. Estoy estudiando el Entity Framework, en una aplicación clásica que implementa el CRUD. Hago uso de Data Sources. Realmente esta es una manera muy poderosa de hacer aplicaciones por la rapidez con lo que se pueden llegar a desarrollar.

    Llegue al punto al que todos, los que nos adentramos en este mundo; tenemos que llegar... la Validación de datos. Para mi caso en especial estoy trabajando con una aplicacion que incluye un Entity Data Model, con el enfoque Model First. Haciendo un poco de busqueda encontré que las validaciones de los Datos de usuario se pueden realizar utilizando el system.ComponentModel.DataAnnotations, esto dentro del archivo MyModel.Designer.cs. 

    Dentro del archivo myModel.Designer.cs tengo este segmento de código:

    Y donde creo el nuevo objeto de la clase a la que pertenece este campo tengo lo siguiente:

    Bien el asunto es este: para el caso cuando escribo un valor que no esta dentro del rango, el mensaje de error se muestra pero para cuando dejo vacio el TextBox que recibi el valor para este campo Como se imaginara surge una excepción, por esto:

    Id_Tipo_Movimiento = Convert.ToInt32(this.id_Tipo_MovimientoTextBox.Text) Pues la cadena no tiene el formato correcto. Entonces lo que me pregunto, es que si debe de haber una doble validación pues de antemano para el ejemplo que pongo estoy obligado a contolar la excepcion. En conclusión no veo mucha utilidad del system.ComponentModel.DataAnnotations para Windows Forms se que para aplicaciones web es muy utilizado. De alguna manera esperaba que la siempre molesta tarea de controlar los datos que ingresa el usuario fuera más sencilla.

    lunes, 13 de agosto de 2012 3:24

Respuestas

  • Dentro del archivo myModel.Designer.cs tengo este segmento de código:

    estas usando un modelo POCO? porque sino poner codigo en eldesigner no lo veo muy bien, porque tu no controlas cuando el codigo se regenera y quita los atributos que defines

    Walkthrough: POCO Template for the Entity Framework

    Id_Tipo_Movimiento = Convert.ToInt32(this.id_Tipo_MovimientoTextBox.Text) Pues la cadena no tiene el formato correcto.

    pero la validacion no asegura la asignacion que estas realizando, porque primero asignas y es donde falla

    pero luego usas el TryValidateObject(), y esta valida la entidad no tu control textbox, debes validar tambien el control no solo la entidad

    Id_Tipo_Movimiento = string.IsNullOrEmpty(id_Tipo_MovimientoTextBox.Text) ? 0 : Convert.ToInt32(this.id_Tipo_MovimientoTextBox.Text)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta ManuelPaz martes, 14 de agosto de 2012 0:01
    lunes, 13 de agosto de 2012 5:02

Todas las respuestas

  • Dentro del archivo myModel.Designer.cs tengo este segmento de código:

    estas usando un modelo POCO? porque sino poner codigo en eldesigner no lo veo muy bien, porque tu no controlas cuando el codigo se regenera y quita los atributos que defines

    Walkthrough: POCO Template for the Entity Framework

    Id_Tipo_Movimiento = Convert.ToInt32(this.id_Tipo_MovimientoTextBox.Text) Pues la cadena no tiene el formato correcto.

    pero la validacion no asegura la asignacion que estas realizando, porque primero asignas y es donde falla

    pero luego usas el TryValidateObject(), y esta valida la entidad no tu control textbox, debes validar tambien el control no solo la entidad

    Id_Tipo_Movimiento = string.IsNullOrEmpty(id_Tipo_MovimientoTextBox.Text) ? 0 : Convert.ToInt32(this.id_Tipo_MovimientoTextBox.Text)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta ManuelPaz martes, 14 de agosto de 2012 0:01
    lunes, 13 de agosto de 2012 5:02
  • Muchas Gracias Leandro, como siempre tu información es precisa. Originalmete segui un tutorial de Julie Lerman de este link http://msdn.microsoft.com/en-us/data/ff706685 El cual es Creating Master-Details Windows Forms with the Entity Framework, para mi proyecto utilice esta herramienta, bien ahora que vi la información de este link Walkthrough: POCO Template for the Entity Framework realice los pasos para crear las clases POCO pero al realizar la operación de arrastrar los objetos de la fuente de datos, arroja el siguiente error: No se puede enlazar la propiedad o la columna Id en DataSource.
    Nombre del parámetro: dataMember. Talvez lo que en el ejemplo de Julie Lerman se explica no sea compatible con el uso del template de ADO. Net POCO.
    martes, 14 de agosto de 2012 0:55