2009-07-20 13 views
5

Hemos utilizado Entity Framework en 2 proyectos ambos con varias 100 tablas.¿Qué problemas ha tenido con Entity Framework?

Nuestra experiencia es principalmente positiva. Hemos tenido grandes aumentos de productividad, en comparación con el uso de Enterprise Library y los procedimientos almacenados.

Sin embargo, cuando sugiero utilizar EF en stackoverflow, a menudo recibo comentarios negativos.

En el lado negativo, hemos encontrado que hay una curva de aprendizaje empinada para cierta funcionalidad.

Por último, a la pregunta: ¿Qué problemas han tenido las personas con EF, por qué prefieren otras ORMS?

+0

Buena pregunta; Sería útil que las personas noten la versión de EF que usaron en sus respuestas (v1 o v4 beta). ¡Gracias! – TrueWill

Respuesta

4

Como tú, mi experiencia con el EF es en su mayoría positiva. El mayor problema que he tenido es que las consultas muy complejas pueden tardar mucho tiempo en compilarse. El diseñador visual también es mucho menos estable y tiene menos funciones que el propio marco. Me gustaría que el framework pusiera el atributo GeneratedCode en el código que genera.

+0

Puede precompilar consultas complejas. Eche un vistazo a CompiledQuery. –

+0

Sí, lo sé. Realmente vale la pena si necesita reutilizar una consulta, pero no más rápido si utiliza la consulta solo una vez. –

4

Recientemente utilicé EF y tuve una experiencia relativamente buena con él. Yo también veo muchos comentarios negativos sobre EF, lo que creo que es desafortunado teniendo en cuenta todo lo que ofrece.

Un problema que me sorprendió fue la diferencia de rendimiento entre dos estrategias de búsqueda de datos. Inicialmente, pensé que hacer una carga ansiosa sería más eficiente ya que extraería los datos a través de una sola consulta. En este caso, los datos eran un pedido y estaba haciendo una carga ansiosa en 5-8 tablas relacionadas. Durante el desarrollo, encontramos que esta consulta es irracionalmente lenta. Al utilizar el generador de perfiles de SQL, observamos el tráfico y analizamos las consultas resultantes. La declaración SQL generada era enorme y SQL Server no parecía gustarle demasiado.

Para solucionar el problema, volví a un modo de carga diferida/bajo demanda, que dio como resultado más consultas al servidor, pero un aumento significativo en el rendimiento. Esto no fue lo que inicialmente esperaba. Mi take-away, que en mi humilde opinión es cierto para todas las implementaciones de acceso a datos, es que realmente necesito evaluar el acceso a los datos. Esto es cierto independientemente de si utilizo un ORM o SQL procs o SQL parametrizada, etc.

1

uso de Entity Framework demasiado y han encontrado las siguientes desventajas:

  1. no puedo trabajar con Oracle que es realmente necesario para mi
  2. Diseñador de modelos para Entity Framework. Durante el modelo de actualización de la parte de almacenamiento de la base de datos también se regenera. Es muy incomodo
+1

Hola. ¿Alguna vez probaste la herramienta Entity Developer (http://www.devart.com/entitydeveloper/) y Devart dotConnect for Oracle data provider (http://www.devart.com/dotconnect/oracle/)? El proveedor le permite conectarse a los servidores de Oracle. El segundo problema se decide utilizando la función de sincronización de mapeo de Entity Developer durante la creación del modelo. Esta opción te ayuda a cambiar solo objetos de base de datos con sentencias ALTER. Su asignación personalizada se guardará en este caso. – JackD

0

No tiene soporte para en lugar de activadores en el marco de Entity.

Cuestiones relacionadas