2009-04-08 10 views
5

Estoy trabajando en una tienda de Microsoft .NET donde está bien usar NHibernate o ADO.NET EF. ¿Qué orientación deberíamos usar sobre cuándo elegir uno sobre el otro?ADO.NET Entity Framework y NHibernate: cuándo usar uno sobre el otro

Por ejemplo, parece que al escribir una aplicación de Silverlight, EF -to-> ADO.NET Data Services -to-> Silverlight ofrecería un aumento de productividad y le proporcionaría una API de servicio REST sin esfuerzo adicional.

¿Qué otras cosas deberían ayudarlo a orientarse en cada aplicación?

ACTUALIZACIÓN (basado en comentario): Éste es poco útil What differentiates Nhibernate from other ORM’s? los otros van apagado en tangentes extraños (como SubSonic) y no se pueden comparar directamente los dos. Supongo que estoy buscando específicamente personas que utilicen ambas, y decida qué proyecto utilizarán por proyecto.

+0

Esto es un duplicado muchas veces más. Solo mira las preguntas relacionadas en el lado derecho de esta página. –

Respuesta

6

En pocas palabras, EF no tiene soporte de Ignorancia de persistencia fuera de la caja. La primera vez que intenté construir una solución con EF el año pasado, me molestó un poco que no puedas tener POCO en tu aplicación. Quería un mayor grado de desacoplamiento con mi modelo, así que terminé cambiando a NHibernate. Desde entonces, alguien ha escrito un adaptador EF POCO. http://code.msdn.microsoft.com/EFPocoAdapter - sin embargo, es realmente solo un generador de código que genera una capa de adaptador para asignar sus objetos.

Por alguna razón, mi aplicación corrió un poco más rápido bajo NHibernate también. Tómelo con un grano de sal porque era nuevo para configurar cualquiera de las soluciones.

+0

La ignorancia de PErsistence parece estar planificada para EF v2.0 que debe enviarse con .NET 4.0/VS 2010, en algún momento a principios de 2010 –

+0

Gracias por la información. Es bueno escuchar que persiste la ignorancia en v2. Echaré un vistazo al adaptador, no había visto eso antes. Pero en los próximos 18 meses creo que me quedaré principalmente con NH. Ya aprendí a escribir esos malditos archivos de configuración;) – BuddyJoe

+0

... y ahora tendrás que volver a desaprender el mapeo, ya que todos los que son "geniales" ahora lo hacen con fluidez :) http://fluentnhibernate.org/ – HenningK

2

Probablemente estaría evitando por completo el marco de entidades por ahora. Está el vote of no confidence que se le dio a la fama, sin mencionar que no es tan maduro como NHibernate.

Habiendo dicho eso, continuaría evaluando el marco de la entidad ya que estoy seguro de que se mejorará con el tiempo.

+0

+1 había visto el "voto de no conf", y el blog publica sobre la funcionalidad faltante o faltante. Pero tienes razón al respecto. Microsoft generalmente obtiene cosas justo al tercer intento. – BuddyJoe

4

Microsoft ha comenzado recientemente a desarrollar una nueva solución, llamada .NET Ria Services (por ahora), que será "ORM independiente" para ingresar y sacar datos de Silverlight de una capa de lógica de negocios que vive en el servidor.

Han mencionado públicamente (en las diapositivas de MIX, incluso) que NH TEST será compatible aquí.

Si está buscando una solución que tenga el mayor respaldo de la comunidad, NHibernate es definitivamente la respuesta. Admitiré que tiene una curva de aprendizaje abrupta, pero en mi experiencia, sin duda merece la pena. Solo haga una búsqueda comparativa de "entidad marco" y "nhibernate", y verá lo que quiero decir. La mayoría de las cosas de EF serán "presionar", mientras que las de NHibernate serán detalles sangrientos y técnicos de abajo a las entrañas. Y preguntas. Ser respondido

Pero como han mencionado otros carteles, estoy seguro de que el Entity Framework mejorará con el tiempo. Sin embargo, por ahora, creo que están tratando de resolver demasiados problemas con un conjunto de herramientas. NHibernate hace solo una cosa, pero lo hace excepcionalmente bien.

También está la cuestión del diseño de aplicaciones aquí. EF parece estar (en su versión actual) construido para entregar una base de datos a una aplicación C#. NHibernate va por el otro lado, y hace que sea más fácil obtener un modelo de objeto persistido.

+0

+1 buenos pensamientos. No tiene que venderme en NHibernate. Lo he estado investigando durante aproximadamente 3 meses. Lo encuentro mucho más personalizable y modular que EF. La forma de hacerlo de NH me habla. LINQ con EF todavía se siente un poco extraño. – BuddyJoe

+1

Se leerá en los servicios de RIA. – BuddyJoe

Cuestiones relacionadas