EF vs. NHibernate [cerrado]

8

En los últimos 2 años desde que comencé a escribir aplicaciones comerciales (antes hacía programación de front end de alto nivel o sistemas de muy bajo nivel), aprendí conjuntos de datos, linq a sql, y ahora framework de entidad. Lo lógico a considerar a continuación parece ser NHibernate.

Las razones por las que finalmente terminé en EF son: (1) tiene el mejor soporte de diseñador y (2) es el más compatible con Microsoft.

Las razones (estas tienen elementos de suposición) Estoy interesado en NHibernate son: (1) puede que no sea reemplazado por algo totalmente diferente tan rápido como MS bate las tecnologías de acceso a datos (2) Parece que es el primero o segundo herramienta de ejecución frontal para lo que hace y (3) Parece ser bastante estable y rastreable en el tiempo bastante.

¿Alguien ha publicado una comparación de los dos? ¿Es uno mejor que el otro para ciertos tipos de arquitecturas? ¿O es solo una cuestión de estilo y preferencia?

Aaron Anodide
fuente

Respuestas:

6

En este punto, creo que las principales (¿solo?) Ventajas que NH tiene sobre EF son algunas estrategias de obtención muy finas . En lugar de cargar lentamente o cargar con entusiasmo todo, NH le ofrece algunas opciones intermedias muy buenas.

Dicho esto, nunca he necesitado ese nivel de control sobre mi acceso a datos, por lo que la simplicidad de EF ha hecho que la elección sea fácil.

Solo tenga en cuenta que el archivo de diseñador de EF con el que es tan agradable trabajar puede convertirse en una pesadilla en el control de fuente; no se fusiona bien, o en absoluto. Asegúrese de verificarlo con un bloqueo explícito cada vez que necesite cambiar cosas.

Adam Rackis
fuente
3
+1 por lo del diseñador. No tenía buena experiencia con nada relacionado con un diseñador.
Codismo
No olvide la capacidad de trabajar siempre con una base de datos que no sea SQLServer. EF genera sql no estándar en algunos casos.
gbjbaanb
¿podría solucionar el problema de fusión colocando el archivo del diseñador en su lista de ignorados y volviendo a generar, porque los cambios se reflejan en el archivo edmx?
Aaron Anodide
1
@ Gabriel, creo que el archivo edmx es lo que causa los problemas. La gente actualiza el diseñador, que cambia el edmx, luego se registra, y si otros han hecho lo mismo, se desata el infierno.
Adam Rackis
55
Si descarga la descarga del EF 4.1 (oficial, compatible con Microsoft, pero no incluido en .NET 4.0) , puede usar Code First y armar sus asignaciones de manera muy similar a FluentNHibernate. Funciona muy bien con control de fuente.
Aaronaught
3

Estamos haciendo un proyecto donde el arquitecto eligió NHibernate sobre EF. Desearía que la elección hubiera sido contraria ya que el requisito de editor-suscriptor estuvo presente desde el principio.

Si planea usar el marco de sincronización , vaya con EF, ya que NHibernate no puede hacer frente a las actualizaciones (a las columnas que especifican de dónde provienen los datos, quién los modificó y mi copia es la última) que ocurren detrás de escena.

Si necesita replicar datos de una base de datos a otra (y mantener las claves primarias iguales), la session.Replicatefunción está mal documentada y parece tomar más tiempo que una copia directa.

Tangurena
fuente