Pregunta

Hola parece que estoy en una encrucijada herramienta ORM y me gustaría algunos consejos de personas que han enfrentado a un desafío similar. En el pasado he estado usando CodeSmith con NetTiers plantillas para generar mi DAL todo ha sido bastante buena, sin embargo he decidido dejar esto por una razón u otra.

Así que estoy en una encrucijada y he encontrado lo siguiente: -

  1. He mirado PLINQO (LINQ to SQL), que parece hacer un gran trabajo sin embargo, con Microsoft incierta de LINQ to SQL que esto puede no ser una buena opción.
  2. LINQ a Entidades - esto está todavía en su infancia y puedo estar equivocado, pero la gente se queja de la hinchazón y la forma de procedimientos almacenados
  3. He mirado en NHibernate, esto tal vez la mejor opción, pero parece ser una curva de aprendizaje
  4. Lo mismo ocurre con LLBLGen
  5. subsónico -? No está seguro acerca de este
  6. seguir con el NetTiers probados, olvidar la hinchazón, olvide que está obligado a utilizar la biblioteca de la empresa, olvidar el SQL dinámico que crea, olvidan que sus casi no hay actividad en los foros, olvidar esto y utilizarlo!

Ya tengo CodeSmith y no deseo de comprar cualquier otra cosa, el código generado debe trabajar en el modo de confianza medio ...

Puede haber otros que he perdido. Busco respuestas que explican por qué la herramienta ORM es digno de mirar.

Gracias Richard

¿Fue útil?

Solución

He utilizado .netTiers a mí mismo en el último proyecto. pero en el que estoy trabajando en este momento estamos tratando Linq 2 Entidades. Tienes razón en Linq2EF no ser maduro. Nosotros quejarse de que todo el tiempo es por eso que utilizamos plantillas T4 que generan código del archivo EDMX. También hemos cambiado las plantillas de modo que tenemos Business Objects, Interfaces para la inyección y DAL + DAO. Estamos encantados de cómo funciona ahora. Lo bueno es que podemos utilizar LINQ contra entidades.

De lo contrario También me gustaría sugerir Fluido NHibernate ( enlace ) a usted. Fue una de las cosas que también consideramos. Sin embargo, usted tiene que escribir un montón de cosas por su cuenta. No es como que estamos acostumbrados en .netTiers donde todo el código se genera para usted.

Desde subsónico 3 ( enlace) se trata sólo de una semana de edad que se sugieren Echale un vistazo. Sobre la base de lo que he visto se ve muy prometedor. Y utiliza T4, para que pueda cortar y dados a adaptarse a sus necesidades.

Otros consejos

probé unos por unas semanas y finalmente se estableció con NHibernate. Es muy fácil de personalizar. Hay una curva de aprendizaje y tarda un poco más de tiempo para establecer que algo como LINQ to SQL pero la ventaja de esto es que no parece como magia. Usted va a entender cómo funciona y podrá personalizarlo exactamente a sus necesidades. La comunidad también es muy bueno y hay una gran cantidad de documentación disponible. Me parece ser un buen equilibrio entre un moderno ORM (No hay generación de código, se puede utilizar de POCO) madurez, y.

Usted podría intentar DataObjects.NET. Este enfoque utiliza ORM "Código primero", es compatible con DB actualización de esquema y LINQ. Compruebe esta descripción breve http://www.x-tensive.com/Products/DO/ .

Creo que las dos herramientas ORM de mayor reputación y fuertes en este momento son NHibernate y LLBLGen Pro .

NHibernate = Muy dominio impulsada orientado.

LLBLGen Pro = basadas en datos orientados.

Los dos son excelentes, y para cada proyecto en función de su naturaleza uno puede ser más apropiado sobre el otro. También viene con frecuencia reduce a una elección y las preferencias personales o incluso la cultura del equipo de desarrollo.

Como dije aunque al final, en general son excelentes y ambos tienen sus ventajas / desventajas leves.

Por razones para utilizar un ORM Aquí hay un enlace a un blog de Glenn Bloque el que lo dice todo. En cuanto a mi experiencia, hace poco más de un año que estaba buscando utilizar un ORM y elegí NHibernate.

Persistencia para mí es un problema resuelto, más allá de algún tipo de mapeo de mi modelo de dominio a mis datos relacionales es algo que no tiene que preocuparse de más. Miré a LINQ to SQL, pero simplemente no me dio suficiente control sobre cómo los datos se asignan a mis objetos y Entity Framework no está cerca lo suficientemente maduro para mi gusto. Otro proyecto importante parte de mi equipo estaban trabajando en NetTiers utilizados y CodeSmith y como usted dice, la hinchazón, la generación de código (y la gran cantidad de ella) me hizo sentir un poco quesy. Al final, he elegido NHibernate porque para mí, es uno de los ORM más maduros por ahí y nos proporcionó características que no sólo apoyarían un modelo de objetos de grano fino, pero que ha construido en las instalaciones de la consulta y que inherentemente direcciones de otros problemas de rendimiento tales como el almacenamiento en caché.

Sí, tengo que admitir que la curva de aprendizaje es bastante empinada, pero si usted invierte el tiempo, los beneficios que obtendrá de ella son enormes. Los blogs de Ayende Rahien y Fabio Maulo son una mina de información sobre NHibernate. Hay algún apoyo para LINQ NHibernate a través de este LINQ proveedor pero Steve Strong está actualmente preparando características destinadas a ayudar LINQ completo en NHibernate. Por lo tanto, de paseo con NHibernate pero al final del día, depende de lo que se sienta más cómodo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top