CodeFirst y Entidades
-
viernes, 15 de julio de 2011 16:54
Buen día, Comunidad.
Las entidades que definimos en CodeFirst con base en las cuales se crea la Base de Datos:
¿Son Entidades POCO o equivalen a las Entidades del modelo de EF?
Es decir, ¿Podemos utilizar dichas entidades para todas las capas de la aplicación o toca convertirlas?
En caso de que toque convertirlas, ¿Cómo se agrega una herramienta de generación de código (plantilla T4) si NO existe un modelo EDM al cual darle clic con el botón derecho del Mouse?
Muchísimas gracias por su atención y colaboración.
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado.- Cambiado jtorrecillaMVP domingo, 17 de julio de 2011 16:35 (De:Lenguaje C#)
Todas las respuestas
-
viernes, 15 de julio de 2011 17:12
Hola Alexander:
Mira este link que te puede dar pistas de como hacer lo de las plantillas T4
Saludos,
phurtado -
viernes, 15 de julio de 2011 18:08
Hola, Pedro.
Muchas gracias por tu respuesta.
El caso es que según vi la herramienta es para crear fácilmente un Controlador para ASP.MVC y yo estoy diseñando una apicación Windows Forms.
Lo otro es que me estoy refiriendo al trabajo con Entity Framework 4.1
¿Alguna otra idea?
Muchas gracias.
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado. -
viernes, 15 de julio de 2011 18:12
Hola Alex, mmm no sabria decirte a que equivales, creeria que a las entidades de EF, pero puedes leer este articulo de scott:
Saludos.
Nicolás Herrera
Bogotá - Colombia
BLOG - Leader Group BogotaDotNet
"Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes- Marcado como respuesta AlexLander martes, 19 de julio de 2011 21:02
-
viernes, 15 de julio de 2011 18:51
Hola, Nicoloco.
Gracias por tu aporte.
Estuve leyendo y parece indicar que las entidades son totalmente POCO.
¿Alguien tiene claro el asunto?
¿Puedo usar dichas clases en las diferentes capas de la aplicación como POCO?
Muchas gracias.
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado. -
viernes, 15 de julio de 2011 19:00
Hola Alexander:
Te he encontrado un link donde sin renunciar al diseñador de edmx puedes personalizarlo para generar clases POCO.
Respecto ¿Puedo usar dichas clases en las diferentes capas de la aplicación como POCO? .
En un principio no le veo ningún problema a que esas clases las pases por las diferentes capas de la aplicación las unicadependencias que veo es:
System.ComponentModel.DataAnnotations.dll
con la que decoras las propiedades de las clases a través de atributos.
Saludos,
phurtado- Marcado como respuesta AlexLander martes, 19 de julio de 2011 21:02
-
viernes, 15 de julio de 2011 19:07
ahh carayy ... mirando en la WEB encontre este lindo articulo tambien de ADONET Blog:
http://blogs.msdn.com/b/adonet/archive/2011/03/07/when-is-code-first-not-code-first.aspx
Veras alli una completa explicacion de sus terminos y un pequeño paralelo.
Espero te sea de utilidad (como lo esta siendo para mi ;D)
Saludos.
Nicolás Herrera
Bogotá - Colombia
BLOG - Leader Group BogotaDotNet
"Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes -
viernes, 15 de julio de 2011 19:13
Hola nuevamente Alex,
Segun veo.. (vamos aprendiendo los dos). el codefirst lo puedes trabajar con tu modelo de EF, sin ningun problema, te generas tus clases a partir del modelo (solo que este caso no es el mapping de una BD), creas las T4 y trabajas todo el codigo de manera independiente, al final puedes hacer el un mapeo al contrario, es decir a partir de tu Modelo de EF te creas el modelo de DB.
Atento a lso comentarios y sugerencias
Saludos.
Nicolás Herrera
Bogotá - Colombia
BLOG - Leader Group BogotaDotNet
"Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes- Marcado como respuesta AlexLander martes, 19 de julio de 2011 21:01
-
viernes, 15 de julio de 2011 19:20
Hola, Pedro.
Le echaré un vistazo al artículo que me indicas.
En cuando a la dependencia con Syste.ComponentModel.DataAnnotations no es necesario del todo porque la configuración puede hacerse también sin decorar las propiedades con dichos atributos, sino creando una clase aparte que implemente System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<TEntity>
Muchas gracias.
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado.- Propuesto como respuesta Pedro Hurtado sábado, 16 de julio de 2011 7:12
-
viernes, 15 de julio de 2011 19:23
Hola, Nicoloco.
Esa es la idea de esta comunidad: que todos podamos aprender cosas nuevas.
En cuanto al Blog de ADO.NET que me indicas lo voy a revisar enseguida.
Muchas gracias.
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado. -
viernes, 15 de julio de 2011 19:41
"Esa es la idea de esta comunidad: que todos podamos aprender cosas nuevas." jajaj eso lo tengo claro... lo digo esperando una aclaracion tuya dado que descubri esas cosillas que no sabia y tu descubriras otras que ni tu ni yo sabemos y espero las compartamos por este medio,
Saludos y feliz aprendizaje :D
Nicolás Herrera
Bogotá - Colombia
BLOG - Leader Group BogotaDotNet
"Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes -
sábado, 16 de julio de 2011 7:15
Hola Alexander:
Coincido totalmente con lo que expones. "que todos podamos aprender cosas nuevas". Yo he aprendido System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<TEntity>
que no lo conocía.
Saludos.
phurtado -
sábado, 16 de julio de 2011 7:44
Hola :D
Simplemente para aclarar un par de cosillas :)
Estríctamente hablando en Code First como indica su nombre empiezas creando las clases desde código. No tienes ficheo .edmx porque defines el modelo usando código en lugar de una herramienta visual.
Si partes de un fichero .edmx (visual) y a partir de él generas código (usando T4) entonces estás en lo que se conoce como Model First.
Y si partes de una BBDD creada para a partir de ella generar código (pasando por un .edmx como paso intermedio o no), entonces usas Data First.
En EF1 (VS2008) sólo había disponible Data First. Con VS2010 se nos dió la opción de usar Model First. Y con EF4.1 han añadido Code First.
Al margen de esto otra cosa es si nuestras clases que representan el modelo (entidades) son POCO, IPOCO o bien clases propias de EF. Puedes usar Model Fist y generar clases POCO, IPOCO (Self Tracking Entities) o bien clases propias de EF. Cada aproximación tiene sus ventajas y sus inconvenientes. Lo mismo sucede con Data First.
Con Code First, lo suyo es generar entidades POCO usando la nueva API DbContext y de configuración. Pero el uso de DbContext no implica que debamos usar Code First. Podríamos usar Model First (es decir generar el .edmx) y luego usar una plantilla T4 que nos generase clases basadas en DbContext (de EF4.1) en lugar del clásico ObjectContext.
Así pues, resumiendo, hablamos de tres cosas separadas:
- La aproximación de cómo generamos las clases para acceder a datos (Data First vs Model First vs Code First)
- Como serán nuestras entidades (POCO, IPOCO (STEs), clases propias de EF)
- El API que usemos: DbContext vs ObjectContext
Un saludo!
Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis- Propuesto como respuesta Pedro Hurtado sábado, 16 de julio de 2011 12:59
- Marcado como respuesta AlexLander martes, 19 de julio de 2011 21:01
-
sábado, 16 de julio de 2011 12:28
Hola, Nicoloco.
Hola, Pedro.
Hola, Eduard.
Muchas gracias por sus comentarios y aportes.
Eduard, cierto es lo que dices. En cuanto a CodeFirst tiene una ventaja adicional que es la causa de que me haya decidido por él:
Sólo con este enfoque es posible crear una clase inicializadora del contexto (que debe heredar de alguna de las que implementan la interfaz IDatabaseInitializer) que cree la Base de Datos si no existe o la reconstruya en caso de que el modelo haya cambiado. Útil en ambiente de desarrollo e incluso para fines de instalación.
Pero me surge una pregunta al respecto:
Esto de la creación y reconstrucción automática de la base de datos ¿Funciona sólo para SQL Server o también para Oracle, MySQL y demás SGBD's soportados por EF?
A todos muchas gracias.
Saludos!
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado. -
lunes, 18 de julio de 2011 10:08
MMmm...
Pues no lo sé la verdad, aunque entiendo que es una cosa que depende del proveedor de EF. Si el proveedor de EF de cada base de datos soporta Code First y la creación de BBDD será posible y si no, pues supongo que no.En este thread http://social.msdn.microsoft.com/Forums/en-IE/adodotnetentityframework/thread/d98a502b-6505-4d73-8c06-83b8355209d4 hablan al respecto. Parece ser que al menos con Oracle la creación automática de BBDD no es posible. Pero ojo, eso puede haber cambiado si Oracle ha sacado una versión nueva del proveedor de EF.
Un saludo!
Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis- Marcado como respuesta AlexLander martes, 19 de julio de 2011 21:01
-
lunes, 18 de julio de 2011 14:46
Muchas gracias a todos por sus valiosos aportes y comentarios.
Bendiciones!
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado. -
martes, 19 de julio de 2011 15:33
Hola
dandome un paseo por la libreria de Krasis, me tope con este libro (esta muy economico) y te puede ir bien poseerlo:
http://shop.campusmvp.com/Product-ADO.NET-Entity-Framework-4.1-Code-First-(PDF)_140.aspx
Saludos Alexander y demas colaboradores de este hilo
Nicolás Herrera
Bogotá - Colombia
BLOG - Leader Group BogotaDotNet
"Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes -
martes, 19 de julio de 2011 20:49Muchas gracias, Nicoloco.
Si la respuesta te es de utilidad, recuerda marcarla como Respuesta y/o votarla como Útil. Así colaboras a que el foro esté organizado.

