2009-02-19 11 views
8

Mi empresa está buscando utilizar un ORM para un nuevo desarrollo en .Net. Actualmente estamos buscando nHibernate, debido a su popularidad, sin embargo, LLBLGen es otra opción que podemos considerar. El costo no es un factor primario. Necesitamos una solución que proporcione una buena separación del modelo de dominio de la base de datos, una buena estrategia de almacenamiento en caché, productividad de desarrollo (es decir, si puedo editarla en una GUI en lugar de archivos de configuración, excelente), buen soporte al cliente.Qué herramienta de ORM debo usar para el desarrollo de .Net

Sé que nHibernate es muy popular, pero también sé que el precio (es gratuito) puede ser parte de esa razón para los tipos de fuente abierta. Dado que el costo no es un factor primario (a menos que el precio sea> $ 10,000), ¿cuál elegiría dadas nuestras circunstancias? Además, ¿qué otros factores, además de los que he enumerado, consideraría más importante al elegir un ORM?

Resolución

Finalmente nos decidimos por NHibernate como una solución, sin embargo, en retrospectiva, creo que me habría ido con LL si tuviéramos que hacerlo de nuevo. Simplemente no se encuentran los archivos de mapeo xml. Los generadores de código que encontré para NHibernate dejaron mucho que desear. Sí, me parece que Fluent NHibernate es un desarrollo interesante, pero prefiero esperar a que madure antes de usarlo.

Al final resultó que la parte más importante de mi proceso de aprendizaje no fueron las tecnologías, sino dos patrones de diseño: el repositorio y los patrones de interfaz separados. Al definir una interfaz de depósito para el acceso a los datos (Jeffrey Palermo tiene varias publicaciones en el blog y los libros Apress y Wrox MVC también lo muestran), podemos usar LinqtoSQL, LLBLGen, NHibernate, etc. y cambiar la implementación de DAL más tarde si cambiamos Entonces, mientras uno de mis compañeros de trabajo usa NHibernate en su aplicación, elegí usar LinqToSQL en mi aplicación más reciente y funcionó bien.

Respuesta

8

Si no te importa pagar, te sugiero LLBLGen.

Lista completa de características here.

Desde el sitio:

La verdadera base de datos de código independiente

completa herencia de apoyo tipo de entidad

LINQ

listas con tipo y vistas

Los procedimientos almacenados apoyan

concurrencia flexible mecanismo de

de grano fino marco de validación

soporte de la mesa Derivado

+0

Ric - estamos usando LLBLGEN actualmente. Estamos intentando incorporar más pruebas unitarias en nuestra nueva aplicación, y tenemos algunas dificultades para hacerlo sin tocar la base de datos (usamos el modelo de adaptador). ¿Cómo te acercas a Unit Testing LLBL? –

+0

Hola @LuckyLindy Sugiero http://ayende.com/projects/rhino-mocks.aspx y creo objetos falsos en lugar de usar la base de datos directamente, creo que esta podría ser una pregunta muy similar casi ya que podría estar pidiendo algo que merezca una mejor respuesta que la mía :) –

2

Depende un poco de lo que quiere:

  • ¿Quieres crear sus propias clases de dominio, que se no tiene que heredar de la interfaz o clase base definida por ORM, NHibernate es la solución preferida.

  • ¿Desea generar automáticamente clases de entidad en función de su modelo de base de datos, entonces debe ir por LLBLGen.

+0

La base de datos manejará el dominio. Básicamente estamos en el negocio de almacenamiento de datos y el núcleo de nuestro negocio es cargar datos, comparar datos basados ​​en reglas personalizadas establecidas por nuestros clientes, y luego proporcionar informes a nuestros clientes. Suena por su respuesta que LLBLGen Pro funcionaría mejor. – John

1

Utilizamos nHibernate mucho. Hasta aquí todo bien.

3

He estado usando LlblGenPro desde 2003. Es un gran producto , a un precio razonable, soporte maravilloso a través del sitio web de diseño de soluciones. Frans (el desarrollador principal) emite parches según sea necesario y nuevas instalaciones completas con frecuencia, para que los clientes que tienen problemas puedan aprovechar las soluciones rápidamente.

La versión actual es compatible con Linq junto con su infraestructura de acceso tradicional. La versión 3 está en desarrollo, pero probablemente no se lanzará hasta 2010.

LlbGen comienza leyendo los esquemas actuales de la base de datos que pueden ahorrar tiempo en el desarrollo del mapeo db al objeto en comparación con nHibernate.

Hay cosas que me gustaría mejorar con LlblGen, pero soy un usuario muy feliz por mucho tiempo y su apoyo es inmejorable.

+0

nice helpfull comment m4bwav - cuidado para explicar por qué? – redsquare

2

¡Otra votación para LLBLGEN, no podría vivir sin ella!

0

SignumFramework tiene un full LINQ Provider, y está basado en un enfoque basado en la entidad. La otra cara es que está bien solo para los nuevos desarrollos (no para las bases de datos existentes).

0

Si comienza desde cero, puede utilizar NHiberbate, que también tiene un fondo sólido. Pero, estamos utilizando LLBLGen Pro en más de un proyecto, y es muy sólido y ortogonal. También tiene una muy buena documentación. NHibernate tiene una gran comunidad (si también agregamos Hibernate), pero LLBLGen es un producto muy maduro, un foro muy útil y muy buena documentación.

¿Qué es el RDMS que se utilizará? Estamos utilizando LLBLGen Pro con Oracle, y separa absolutamente las operaciones genéricas y específicas de la base de datos sin problemas. Se ha evitado Inner Platform Effect perfectamente. (Piense en las secuencias de Oracle y los campos de identidad de SQL Server, por ejemplo. No es un problema con LLBLGen Pro.)

LLBLGen Pro es un generador de códigos muy extenso. Mapea los objetos en la base de datos a una capa de acceso a la base de datos como un proyecto (s) que se pueden agregar fácilmente a su solución. Esto tiene una muy buena ventaja que no se puede tener a primera vista: si un procedimiento almacenado o incluso un campo cambia/elimina, notará el error en tiempo de compilación, no de tiempo de ejecución. Entonces, si ya tiene una base de datos en ejecución, vaya con LLBLGen Pro.

También puede agregar sus componentes de fuente de datos a Visual Studio si es un tipo de arrastrar y soltar y enlazar fácilmente los datos. Algunas personas lo encuentran útil para proyectos ASP.NET.

Una cosa más importante: Listas tipadas: Estas son muy útiles para crear fuentes de datos sin cambiar ningún código en la base de datos. Por lo tanto, si tiene algunas cuadrículas que muestran datos, puede proporcionar datos sin tocar la base de datos, que se vuelve muy segura en entornos críticos.

Así que, sugeriría LLBLGen Pro aunque N/Hibernate tiene más usuarios.

0

Para proyectos pequeños utilicé Sooda pero eso fue hace aproximadamente un año. Ahora solo y definitivamente NHibernate.

4

Echa un vistazo DataObjects.Net (GPL + comercial).

+0

También asegúrese de revisar las muchas discusiones que resaltan cómo se realiza el enlace publicado anteriormente. Los blogs son tus amigos – nathanchere

Cuestiones relacionadas