Pregunta

tengo la impresión de que

  • EF con POCO: le permite asignar sus propios POCO a las entidades del modelo (.edmx).
  • EF Code-Only: no edmx / model designer (es decir, metadatos CSDL / SSDL / MSL (colectivamente EDMX)). Todavía POCO's pero las asignaciones, relaciones, navegación, etc. están todas manualmente codificadas (de ahí el código, descripción).

Si esta descripción de los dos conceptos es (más o menos) correcta, ¿por qué alguien haría un código solo en lugar de EF con POCO?

Ambos están haciendo POCO, pero el segundo tiene la carga adicional de tener que hacer también el mapeo, ¿manualmente?

¿Fue útil?

Solución

  1. El código solo es excelente si desea escribir la asignación a mano sin tener que pasar por XML. Además, el diseñador de edmx se vuelve difícil de manejar después de 50 modelos, es una carga usar de esa manera.

Cuando algo sale mal dentro de su XML de mapeo, es realmente un PITA para cavar en el xml para hacer las correcciones que necesita. Además, el diseñador se rompe si comienza a editar manualmente su xml en ciertos escenarios.

Ahora no conozco los detalles, pero el diseñador en EF1 no era compatible con todas las opciones de mapeo disponibles. El diseñador EF4 tiene algunas mejoras (se me ocurren relaciones unidireccionales) pero no estoy seguro de si tiene paridad de características con las asignaciones manuales.

  1. Sí.

Otros consejos

Lo único que agregaría a la respuesta de jfar es que con Code-Only no tiene para crear asignaciones.

Las asignaciones se pueden inferir por convención la mayor parte del tiempo.

El punto sobre la pregeneración de vistas es importante. No he escuchado que Microsoft tenga ninguna intención de proporcionar pregeneración solo para código. Si alguien sabe diferente, publique.

He usado solo código para 400 tablas como parte de una investigación sobre si ir con EF4 o NHibernate y hay un retraso inicial de 80 segundos para la generación de vistas, exactamente lo mismo que cuando se usa el diseñador, pero con el diseñador es posible ver la pregeneración, lo que redujo el retraso a 10 segundos. Si no está satisfecho dividiendo su modelo y tiene más de 75 tablas, no use solo código.

No creo que Code-Only actualmente le permita pregenerar vistas, por lo que puede haber un costo de rendimiento. Sin embargo, esto podría cambiar antes del lanzamiento.

Algo más que no se ha mencionado es que obtiene una verificación completa en tiempo de compilación de su sintaxis cuando usa Code Only. Si está utilizando el diseñador visual con EDMX, obtendrá algunas comprobaciones en tiempo de compilación, pero es limitado. Para modelos más grandes, EDMX se vuelve extremadamente desordenado, y escribir manualmente CSDL, SSDL y MSL es la única forma decente de administrar modelos extremadamente grandes con mapeos XML. No obtiene ninguna verificación en tiempo de compilación si administra manualmente sus asignaciones.

Con Code Only, tiene la ventaja de verificar el tiempo de compilación completo para modelos de cualquier tamaño, incluso si tiene cientos o miles de entidades con las que necesita trabajar. También da como resultado menos `` desorden '', ya que su producto final es todos ensamblados compilados, en lugar de una mezcla de ensamblajes y varios tipos de archivos xml.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top