¿Es mejor? Escuché la extensión CodeFirst pero está lista para el horario estelar. Por favor, comparta su experiencia con el desarrollo, los gastos generales de rendimiento, etc.¿Cómo se compara EF4 con NHibernate?
Respuesta
Creo que esta es una pregunta oportuna, ya que me preguntaba exactamente lo mismo. Estoy tratando de crear un modelo serio de comercio electrónico y estoy tratando de mantener mis POCO libres de preocupaciones de persistencia, así como tratar de mantenerme fiel al Diseño Dirigido por Dominio. Hasta el momento, soy muy cauteloso, y estoy en la duda sobre si debo enviar un barco a NHibernate. Lo único que me impide hacerlo es que supongo que Microsoft mejorará (y rápidamente).
Algunos de los mayores problemas hasta ahora:
- Incapacidad para finamente materialización objeto de control. EF llama al constructor zero-arg en su POCO, y este es un comportamiento que no puede cambiar.
- Sin soporte de enum. La comunidad ha estado gritando, gritando! - por esto, y no ha sucedido. Las soluciones son terribles y contaminan su modelo de dominio.
- Extraños errores de mapeo al tratar de controlar los nombres de las columnas y las relaciones en la base de datos. Los principales en los que puedo pensar son las llaves compuestas y las relaciones de muchos a muchos. Esto puede solucionarse, y supongo que estos serán corregidos por el tiempo de liberación, pero son frustrantes, no obstante.
- Mal SQL. También hago trabajo de DBA, y el SQL que genera EF (con o sin Code-First) es atroz.
Y esto es solo la punta del iceberg: solo estoy empezando a aprender EF4 y me estoy encontrando con obstáculos terribles. Cuando pienso en más razones, las agregaré aquí. Todavía estoy luchando con eso.
(Me pregunto si la comunidad le dará otro voto de "no confianza.")
Más:
- Para añadir al problema "Extraño errores de asignación": No se puede controle el nombre de una columna si participa en una relación autorreferencial (por ejemplo, si tiene una jerarquía). Supongo que esto se solucionará en la versión final.
- Falta de procesamiento por lotes, lo que genera múltiples viajes de ida y vuelta a la base de datos. Por ejemplo, ¿cómo eliminas un montón de elementos de una colección? Cargue todas las entidades en la memoria y elimínelas de a una por vez. Una queja más pequeña es la cantidad de hits de DB cuando se inserta en tablas que participan en una relación de herencia.
- Ninguna manera inteligente de lidiar con los cambios del modelo. A EF Code-First le encanta abandonar completamente su base de datos si necesita cambiar el esquema.
- Pocos puntos de extensibilidad. Literalmente puede contar, por un lado, la cantidad de eventos a los que EF4 le permite suscribirse (y Code-First no proporciona mucho más).
En cuanto a mí - yo prefiero EF pero con algunas mejoras.Básicamente EF te ofrece las siguientes ventajas:
- Visual Editor del modelo de base de datos
- /modelo asistente de actualización (en lugar de cambios manuales XML - lo que es terrible para mí)
Además, estoy el uso de herramientas 3-rd partido comerciales basados en EF y L2S (LinqConnect) que proporcionan para mí las siguientes características:
- Geography support
- Optimized SQL generation
- producto totalmente integrado a Visual Studio
- asistente de actualización de base de datos inteligente (modo de sincronización)
- 1. ¿Cómo se compara el soporte POCO de Entity Framework 4 con NHibernate?
- 2. ¿Cómo se compara Archiva con Nexus?
- 3. ¿Cómo se compara Hive con HBase?
- 4. ¿Cómo se compara RabbitMQ con Mule?
- 5. ¿Cómo se compara JavaFX con WPF?
- 6. ¿Cómo se compara FlockDB con neo4j?
- 7. ¿Cómo se compara Voldemort con Cassandra?
- 8. ¿cómo se compara y se compara el trabajo?
- 9. Cómo lidiar con DDD y EF4
- 10. ¿cómo funciona netezza? ¿Cómo se compara con Hadoop?
- 11. ¿Cómo se compara C-- a LLVM?
- 12. ¿Cómo se compara Spring para Python con Spring para Java?
- 13. ¿Qué es WPF y cómo se compara con WinForms?
- 14. ¿Cómo se compara node-imagemagick con node-gm?
- 15. ¿Cómo se compara Python OOP con PHP OOP?
- 16. ¿Cómo se compara JDK 6 regexp con org.apache.regexp?
- 17. ¿Qué es un marco web? ¿Cómo se compara con LAMP?
- 18. ¿Cómo se compara Mercurial con GIT y SVN?
- 19. ¿Cómo se compara Asp.Net MVC con Java MVC frameworks?
- 20. ¿Cómo se compara Tir con otros marcos web de Lua?
- 21. ¿Cómo se compara el escalado de PostgreSQL con MongoDB?
- 22. ¿Cómo se compara Moose con el sistema OO de Python?
- 23. ¿Cómo se compara Amazon CloudFront con Limelight o Akamai?
- 24. SQL - ¿Cómo se compara un CLOB
- 25. ¿Cómo se compara una biblioteca de cifrado?
- 26. ¿Cómo se hace la recolección de basura en Java y cómo se compara con .net?
- 27. ¡compara un objeto con nulo!
- 28. ¿Cuánto más rápido se compara MyISAM con InnoDB?
- 29. ¿Cómo compara yum las versiones?
- 30. ¿Cuándo se debe usar POCO en EF4?
Esto es muy interesante y útil. Espero que más personas SO comenten antes de que los trolls cierren este hilo. –
Me gustaría saber más, también, ya que estoy/muy/en conflicto con la obligación de comprometerme con EF4 Code-first. – anon
Esta es una muy buena lista. Todos los puntos válidos que he experimentado en los últimos meses. También arrojaría en EF4 la falta de soporte de tipo de datos 'GEOGRAPHY' (SQL Server), y la imposibilidad de pasar los tipos de tabla definidos por el usuario (también SQL Server) a los procesos almacenados. Para combatir el primero, tuve que usar desencadenadores, para combatir el último me degradé al clásico ADO.NET. – RPM1984