none
Modelos con Entity Framework Code First RRS feed

  • Pregunta

  • Hola, es la primera vez que voy a usar EF con Code First y tengo algunas dudas.

    Estoy usando una arquitectura en capas, con las siguientes:

    • Datos: donde tengo ORM EF
    • Logica: logica de negocio
    • Presentacion: MVC, Windows Forms
    • Entidades: capa transversal donde guardo todas mis entidades.

    Antes yo usaba DB First, creaba la base de datos, esta se me agregaba a la capa Datos y luego los modelos que habia en esta los pasaba a modelos de la capa Entidades para que todas las capas puedan entenderlos.

    Mi duda es, puedo crear los modelos en la capa Entidades, y que EF los reconozca para crear la db y tambien poder usarlos en el resto de capas? O debo crear los modelos para EF en la capa datos y tambien en la capa entidades?

    Gracias.

    martes, 8 de octubre de 2019 21:52

Todas las respuestas

  • Sí, si no tienes ningún requisito especial sobre la capa transversal, puedes usar las mismas clases tanto para el modelo de EF como para pasarlas como entidades entre capas.

    Hay desarrolladores que prefieren hacer la distinción entre ambas, pero en este caso tienes el trabajo adicional de convertir unas en las otras tanto a la ida como a la vuelta de las llamadas que hagas a capa de datos.

    Si ya estás acostumbrado a compartir las mismas entidades porque las compartías cuando estabas usando EF Database First, entonces no hay motivo para que cambies de criterio por el mero hecho de pasar a Code First.

    miércoles, 9 de octubre de 2019 6:36
  • hola

    >>Entidades: capa transversal donde guardo todas mis entidades.

    Esta no es una capa, forman parte de la de datos

    >>puedo crear los modelos en la capa Entidades, y que EF los reconozca para crear la db

    claro por supuesto, esa es la forma en que debes hacerlo

    >>tambien poder usarlos en el resto de capas?

    ni, puedes usarlos en todos menos en la presentacion, los model de mvc debe tener sus propias clases que deberas mapear a las entidades que persistes

    no uses las clases de EF como model de mvc

    >>O debo crear los modelos para EF en la capa datos y tambien en la capa entidades?

    capa de entidad no existe y son los mismo

    lo que debes diferenciar es el modelo persistente del modelo de presentacion

    por eso en mvc ves una carpeta Model, no esta alli porque si, sino que debes definir los Model o ViewModel que uses en el cshtml conviertiendo de este a las entidades de EF

    saluds


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 9 de octubre de 2019 13:33
  • hola

    >>Entidades: capa transversal donde guardo todas mis entidades.

    Esta no es una capa, forman parte de la de datos

    >>puedo crear los modelos en la capa Entidades, y que EF los reconozca para crear la db

    claro por supuesto, esa es la forma en que debes hacerlo

    >>tambien poder usarlos en el resto de capas?

    ni, puedes usarlos en todos menos en la presentacion, los model de mvc debe tener sus propias clases que deberas mapear a las entidades que persistes

    no uses las clases de EF como model de mvc

    >>O debo crear los modelos para EF en la capa datos y tambien en la capa entidades?

    capa de entidad no existe y son los mismo

    lo que debes diferenciar es el modelo persistente del modelo de presentacion

    por eso en mvc ves una carpeta Model, no esta alli porque si, sino que debes definir los Model o ViewModel que uses en el cshtml conviertiendo de este a las entidades de EF

    saluds


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola Leandro, no entendi la primera respuesta que me diste, de que la capa Entidades esta dentro de Datos.

    Te explico como hago y por que no entiendo si lo tendria que hacer asi.

    Yo tengo una capa Entidades donde guardo por ejemplo Cliente y tiene las propiedades del cliente. Esto me sirve para que la capa de Logica, transforme la Entidad que esta en Datos y viene de la DB a la entidad Cliente que uso para mostrar, en este caso en la capa Presentacion.

    Si no tendria la capa Entidades, y guardaria mis modelos en la capa de presentacion de MVC, Logica de negocio al referenciar a Datos podria obtener el modelo que viene de la db, pero Logica de negocio no podria pasarlo a un objeto que pueda entender Presentacion.

    miércoles, 9 de octubre de 2019 17:04