nhibernate - framework - entity developer
Qué herramienta de ORM debería usar para el desarrollo de.Net (10)
Depende un poco de lo que quieras:
¿Desea crear sus propias clases de dominio, que no tiene que heredar de la interfaz o clase base definida por ORM, entonces NHibernate es la solución preferida?
¿Desea generar automáticamente clases de entidad basadas en su modelo de base de datos, entonces debería ir a LLBLGen?
Mi compañía está buscando usar 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.
Sé que nHibernate es muy popular, pero también sé que el precio (es gratis) 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 importantes al elegir un ORM?
Resolución
Finalmente decidimos NHibernate como una solución, sin embargo, en retrospectiva, creo que habría ido con LL si tuviéramos que volver a hacerlo. 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.
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.
He estado usando LlblGenPro desde 2003. Es un gran producto, con un precio razonable y un excelente soporte 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 de la base de datos actual, lo que puede ahorrar tiempo en el desarrollo del mapeo db a 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.
Si no te importa pagar, te sugiero LLBLGen.
Lista completa de características aquí.
Desde el sitio:
Código verdadero de base de datos independiente
Herencia de tipo de entidad completa
Soporte Linq
Lista de tipos y vistas escritas
Soporte de procedimientos almacenados
Mecanismo de concurrencia flexible
Marco de validación de grano fino
Soporte de tabla derivada
Usamos nHibernate mucho. Hasta aquí todo bien.
¡Otro voto para LLBLGEN, no podría vivir sin eso!
SignumFramework tiene un Proveedor de LINQ completo , y se basa en un enfoque impulsado por la entidad. La otra cara es que está bien solo para los nuevos desarrollos (no para las bases de datos existentes).
Para proyectos pequeños usé Sooda, pero eso fue hace aproximadamente un año. Ahora solo y definitivamente NHibernate .
Eche un vistazo a DataObjects.Net (GPL + comercial).
Le sugiero que primero vea las diversas preguntas similares, por ejemplo: https://.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net
Si comienzas desde cero, puedes 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.
¿Cuál es el RDMS para ser utilizado? Estamos utilizando LLBLGen Pro con Oracle, y separa absolutamente las operaciones genéricas y específicas de la base de datos sin problemas. Ha evitado el efecto de plataforma interna perfectamente. (Por ejemplo, piense en las secuencias de Oracle y los campos de identidad de SQL Server. 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: 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.
Por lo tanto, sugeriría LLBLGen Pro aunque N / Hibernate tenga más usuarios.