2010-07-06 29 views
29

¿cuál es la mejor manera es utilizar un ORM como Nhibertate o Entity Framework o para hacer un ORM cliente. Voy a utilizar este ORM para un proyecto de C# 4.0mejor ORM para usar con C# 4.0

+1

¡La mejor manera es aprenderlo! Tal vez la pregunta es "¿Qué marco ORM debo elegir?" ... – Rippo

+0

Pregunta similar: http://stackoverflow.com/questions/3172772/whats-the-best-feature-of-the-orm-framework-you-use – dcp

+2

¿Puede dar más detalles en cuanto a su situación de uso? –

Respuesta

54

ACTUALIZACIÓN 2016

Seis años más tarde, las cosas son muy diferentes. NHibernate está prácticamente abandonado, otras alternativas fueron abandonados (por ejemplo subsónico), Entity Framework es quizás el ORM con todas las funciones más comunes, y la gente ha estado moviendo a micro ORM como Dapper durante años, para trazar a partir de consultas a los objetos con un mínimo de gastos generales.

Los escenarios de aplicación también han cambiado. En lugar de cargar y almacenar en caché un gran gráfico de objetos a expensas de la memoria y el rendimiento, los servicios web y las API REST deben atender una gran cantidad de solicitudes más pequeñas. Esto significa que una sobrecarga de ORM completa ya no es aceptable.

Esto significa que los patrones y técnicas como Active Record, transacción por solicitud, etc se han convertido en el rendimiento y la escalabilidad matar anti-patrones

Una de las características más importantes hoy en día es la ejecución asíncrona, para reducir el hilo y los residuos CPU debido a murga. NHibernate nunca hizo esta transición.

respuesta original

Definir "mejor": Es el más maduro, el que tiene más documentación, la comunidad más grande, más convencional?

NHibernate es más maduro, rico en funciones, con una comunidad más avanzada y no es probable que se interrumpa cuando MS decide romper la compatibilidad de nuevo. Entity Framework es más convencional y se admite de fábrica. Encontrará más libros para principiantes para EF, libros más avanzados para NH.

Una buena opción sería la de probar uno de los ORM más simples como subsónico y pasar a ORM más avanzados una vez que entienda cómo ORM funcionan, cuáles son las diversas trampas, qué SELECT N+1 medios [: P]

¡No intente crear su propio ORM, ya hay muchas docenas! Subsónico, Castle ActiveRecord, NH, EF (por supuesto), LLBLGenPro ...

+1

maduro, rico y avanzado. Este lenguaje es muy descriptivo y ciertamente no es casi idéntico a su copia de la página principal, o la copia en cada parte del portal del software ... ¡gracias! – Gusdor

8

La mayoría de ORM tienen sus propias fortalezas y debilidades.

Entity Framework, por ejemplo, tiene la (gran) ventaja de estar en el marco mismo, pero también es bastante pesado y un poco más difícil de poner en marcha (curva de aprendizaje más pronunciada).

Hay algunos muy agradable, muy fácil de usar ORM comerciales. Actualmente estoy usando Lightspeed en un proyecto C# 4, y estoy muy satisfecho con este escenario específico.

Todo se reduce a lo que necesita de la ORM. Si quieres configurarlo y usarlo de manera rápida y fácil, Lightspeed, subsónico y otros son muy buenos. Si necesita funciones completas, Entity Framework y NHibernate son buenas opciones.

8

Llamar a un ORM el mejor de todos en la perspectiva general es completamente imposible. Cada uno de ellos es mejor desde diferentes perspectivas. Elegiste la que mejor se ajusta a tus necesidades. Linq2Sql fue escrito teniendo en cuenta el rendimiento pero carece de soporte para otros proveedores, Linq2Sql es muy rápido.Sin embargo, hay otros que pueden no ser tan rápidos como Linq2Sql a la hora de tratar con el servidor SQL, pero admiten una gran variedad de proveedores. La mejor idea sería enumerar las características que desea que tenga un ORM para su proyecto y seleccionar la que satisfaga todas sus necesidades. Puede hacer estas preguntas para elegir el ORM adecuado para su proyecto.

  • Lo proveedores de bases de datos desea que el ORM para apoyar? SQL Server, MySQL, Oracle, etc.
  • ¿Necesita modelo de primer o db-primera apoyo?
  • ¿Cuál es mi criterios de funcionamiento [memoria, procesamiento]?
  • ¿Vas a utilizarlo en aplicación web o una aplicación de escritorio?
  • ¿Tiene clientes distribuidos en su aplicación?
  • Y la lista sigue ..
2

que utilizar LINQ to SQL ORM como mi principal al crear aplicaciones C#. Eventualmente pasaré a Entity Framework, pero por ahora este es realmente fácil de usar y rápido.

12

Si puede gastar algo de dinero, tienen definitivamente un vistazo a LLBLGEn Pro 3.0

  • pleno apoyo .NET 4.0 y es un producto maduro. Buen soporte también es útil.
  • soporte de base de datos amplia (Oracle, MS SQL, Firebird, MySQL, PostgreSQL, Sysbase)
  • buen diseñador, el primer soporte del modelo y también la base de datos primer soporte

Si su presupuesto es delgado, a continuación, tratar NHibernate. También es un producto maduro, pero tiene una mayor curva de aprendizaje. Y si necesita algún tipo de apoyo, siempre se puede llamar Ayende :-)

Para proyectos más pequeños es EF 4.0 una buena opción.

1

Estoy de acuerdo con @este. __ curious_geek que elegir el ORM correcto dependería de sus requisitos. Después de haber trabajado tanto en Hibernate como en Entity Framework, creo que este último es más fácil de usar ya que es un editor basado en GUI. En el frente de riqueza de características, NHibernate tiene la ventaja de admitir una gran cantidad de proveedores de bases de datos. También la personalización de NHibernate resultó ser mucho más fácil que ajustar Entity Framework.

Suponiendo que la mayoría de las herramientas de satisfacer su requisito básico, preferiría NHibernate como una vibrante comunidad de usuarios y atractivo es una gran ventaja para cualquier herramienta.

Cuestiones relacionadas