none
Validaciones Modelo con Entity Framework 6 RRS feed

  • Pregunta

  • Cordial saludo,

    Soy nuevo utilizando los ORM, siempre he generado el modelo de las aplicaciones de forma manual, creando una clase por cada entidad, generando los respectivos Dataanotation para cada atributo.

    En visual 2010 realice una prueba, siguiendo un ejemplo generando el modelo con entity y creando las validaciones con una clase parcial y creando una clase para validar todo el modelo y funciona.

    Me parece muy útil el uso de los ORM, pero lo que vi es que con el EF 6, no me deja crear clases parcial porque ya el modelo tiene una donde crea los atributos de las respectivas entidades de la base de datos.

    La pregunta que les tengo es, ustedes como manejan los dataanotation si es que manejan y las validaciones de los modelos, trate de hacerlo con MetadataType, pero el inconveniente es que al actualizar el modelo desde la base de datos, estas se desvinculan y/o no aparecen después de dicha actualización.

    Quedare muy agradecido si me pueden colaborar con eso.

    Gracias

    miércoles, 3 de mayo de 2017 13:54

Respuestas

  • hola

    partamos de la base que las entidades de persistencia que usas en EF no deberias usarlas como entidades de modelo de la view, son dos clases separadas

    desde el context de eF obtendras, digamos, un Cliente, pero para asignarlo a la view usarias un ClienteModel, con la conversion de uno a otro

    en este punto puedes ayudarte con automapper

    entonces los dataannotations los defines en el model sin afectar a la clase que usae en el context de EF

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta JC9210 miércoles, 3 de mayo de 2017 19:02
    miércoles, 3 de mayo de 2017 15:49
  • Hola JC9210

    En efecto, cuando generas el EF tienes unas clases que se crean a partir del modelo, lo que debes hacer para trabajar con ellas es crear la llamada capa entidad (o mapeo), en donde trabajarás con estas en todo el proyecto. Jamás trabajes con los modelos resultantes del EF. 

    Como te sugiere Leandro, puedes apoyarte en el automapper que es el que se utiliza para ese caso, aunque eso no quite que lo puedes realizar de manera manual

    Saludos.


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta JC9210 miércoles, 3 de mayo de 2017 19:02
    miércoles, 3 de mayo de 2017 17:12

Todas las respuestas

  • hola

    partamos de la base que las entidades de persistencia que usas en EF no deberias usarlas como entidades de modelo de la view, son dos clases separadas

    desde el context de eF obtendras, digamos, un Cliente, pero para asignarlo a la view usarias un ClienteModel, con la conversion de uno a otro

    en este punto puedes ayudarte con automapper

    entonces los dataannotations los defines en el model sin afectar a la clase que usae en el context de EF

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta JC9210 miércoles, 3 de mayo de 2017 19:02
    miércoles, 3 de mayo de 2017 15:49
  • Gracias por tu respuesta Leandro.

    Lo que te entendi es que debo realizar un modelo transversal para realizar el mapeo con el modelo de la persistencia y no perder los datos de las validaciones previamente configuradas?

    Se deberian llamar igual?

    Cuando utilizo la funcionalidad de Scaffolding me solicita un modelo para generar el controlador y la vista, deberia seleccionar el modelo que se crea manualmente, o el que se genera por EF.

    miércoles, 3 de mayo de 2017 16:44
  • Hola JC9210

    En efecto, cuando generas el EF tienes unas clases que se crean a partir del modelo, lo que debes hacer para trabajar con ellas es crear la llamada capa entidad (o mapeo), en donde trabajarás con estas en todo el proyecto. Jamás trabajes con los modelos resultantes del EF. 

    Como te sugiere Leandro, puedes apoyarte en el automapper que es el que se utiliza para ese caso, aunque eso no quite que lo puedes realizar de manera manual

    Saludos.


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta JC9210 miércoles, 3 de mayo de 2017 19:02
    miércoles, 3 de mayo de 2017 17:12