2009-05-27 33 views
5

Necesito recopilar algo de información sobre las soluciones ORM existentes. No dude en escribir sobre cualquier lenguaje de programación.ORM frameworks

¿Puede contarnos sobre el mejor marco de trabajo ORM que alguna vez haya usado y por qué es mejor que otros?

+1

No existe un ORM "independiente del idioma" (excepto en .net, pero incluso de lo único que funcionará) en idiomas .net) – Nir

+0

Gracias muchachos, Realmente dije que no es lo que quiero decir. –

+0

Con esto siendo tan vago y subjetivo, estoy tentado de hacerlo CW ... ¿algún pensamiento? –

Respuesta

6

Utilicé NHibernate y Entity Framework.

La versión estable actual del marco de entidad es muy inmadura. Es muy difícil o imposible realizar tareas comunes. Probar el código también es difícil, ya que no puede separar realmente sus entidades de las clases de acceso a datos. Pero se integra perfectamente con visual studio ide. La configuración es fácil y la actualización de todos los modelos de la base de datos lleva solo unos segundos. La próxima versión de EF (4.0) resolverá algunos de estos problemas.

NHibernate es bastante potente. Es compatible con los antiguos objetos clr antiguos, por lo que puede trabajar con entidades simples. Las configuraciones proporcionan un gran control con gran detalle. Las capacidades del marco son satisfactorias y tiene una gran comunidad activa y buena documentación. Configurar y actualizar entidades es un poco difícil ya que debe usar generadores que busquen su base de datos y generen entidades y archivos xml. Puede ser complicado encontrar un generador o una plantilla que se ajuste exactamente a sus necesidades. Pero una vez que configuras todas las cosas, te encantará.

3

Encontré LINQ to SQL para ser una solución bastante directa. La primera vez que lo usé, diría que tenía un ORM básico funcionando en unas pocas horas y que estaba creando consultas LINQ con él.

Microsoft tiene un ORM adicional (Entity Framework), lo que he oído es más complejo, pero puede ser útil para aplicaciones distribuidas altamente complejas con múltiples fuentes de datos, etc.

En general me pareció LINQ ser una forma fácil y rápido para usar ORM

2

He estado mirando Telerik Open Access durante los últimos meses, en general este ORM ha sido un dolor para trabajar, se anunció como tener un amplio soporte linq pero en realidad muchas de las características linq que normalmente esperarías no trabajo del lado del servidor y se realizan en el cliente. También tuve problemas para usar múltiples condiciones en una cláusula where, vea mi último question. Aquí hay algunas cosas que encontré

  • No hay soporte para las vistas
  • No es posible asignar más de una entidad a la misma mesa
  • herencia y la interfaz se requiere hacer cambios para que el esquema de base de datos
  • Sin
  • diseñador visual como LINQ to SQL y Marco Entidad
  • Si desea realizar una inserción cualesquiera entidades relacionadas deben ser exagerado primera

Rohan

+1

Para el registro, creo que esta revisión de OpenAccess ORM está desactualizada y es inexacta. OpenAccess tiene soporte LINQ completo, a la par con otros ORM .NET, un rico Visual Designer, junto con soporte para vistas, procesos almacenados y características que van más allá de sistemas como EF y NH (como el Domain Service Wizard). Te animo a que revises las últimas versiones para una comparación más precisa: http://www.telerik.com/products/orm.aspx – Todd

+2

¿Te das cuenta de que esto fue escrito en 2009? –

1

LINQ2SQL era agradable, EF tiene sentido, pero es muy complejo y está orientado a SQL Server. NHibernate es especial y Telerik OpenAccess (totalmente .NET/Visual Studio) tiene un amplio conjunto de funcionalidades y soporte profesional.

Como sé que el producto que puedo comentar sobre las preocupaciones de Rohan:

  • existentes Vistas se pueden utilizar y apoyo Vistas llena se acerca
  • Mapeo más de una entidad a la misma mesa "trabaja" para jerarquías de clases, con la limitación de mapeo inverso existe
  • herencia y el apoyo interFacer "no requieren" cambios en el esquema de la base de datos, una vez más limitación con el mapeo inverso existe aunque
  • diseñador visual vendrá, avance y retroceso mapeo Wiza RDS permite ya a hacer cualquier cosa de una manera fácil
  • Hay una solución para el problema de inserción mencionadas y se fijará en general

visitar el sitio Telerik para encontrar clientes felices y no dude en utilizar el foros telerik y recursos de soporte para cualquier pregunta.

-Peter

+1

obviamente eres vendedor de Telerik. Yo también he usado Telerik OpenAccess ORM y no lo deseo en mi peor enemigo. Se requiere TCP/IP para la autenticación ORM. No puedo crear una versión de cliente porque ORM requiere acceso TCP/IP al servidor. Esto no es bueno ya que me obliga a estar en el sitio para hacer una construcción. Si conoce otra forma de crear paquetes de implementación, fuera de una red, por favor avíseme. De lo contrario, use nHibernate. Realmente recomiendo nHibernate sobre cualquier otra cosa que haya usado alguna vez. – D3vtr0n

+0

Limpiar el registro, Devtron, creo que esta revisión se basa en una versión muy antigua de OpenAccess ORM. Todas las versiones actuales admiten todos los métodos de comunicación de SQL Server (TCP/IP, canalizaciones con nombre, en memoria). El soporte del controlador que se envía de fábrica con OpenAccess supera el que se envía con NHibernate también. Consulte las últimas versiones para obtener una vista actualizada: http://www.telerik.com/products/orm.aspx – Todd

0

Im nuevo a OpenAccess ORM y estamos utilizando dos productos. Informes y OpenAccess. Creo que hay algunas características que las personas se perdieron.

  1. OpenAccess utiliza diseñadores gráficos, mientras que NHibernate sigue utilizando archivos XML manuscritas
  2. OpenAccess no se limita a SQL Server como EF4 y marcos similiar

su uso es más fácil y los foros son bastante útiles.

0

Con ORM hay múltiples posibilidades, todo depende de lo que desee.

Como un verdadero asignador de ORM Se lo recomiendo encarecidamente NHibernate y Fluido NH asignaciones. Necesita mucha investigación para armar una arquitectura agradable, pero entonces nada se interpone en su camino. Con compromisos mínimos, obtienes flexibilidad real.

EF6x (el núcleo no es prod.-listo en mi humilde opinión) se llama ORM, pero lo que genera está más cerca de un DAL. Hay algunas cosas que no puedes hacer de manera efectiva con EF6. Aún así, esta es mi herramienta favorita para un modelo de lectura, mientras que sí lo combino con NHibernate (donde NH uso para un modelo de DDD/escritura).

Ahora a rendimiento - siempre pro y contras. Si profundizas en ORM arquitectura (mira mi artículo: avoid ORM bad habits) entonces encontrarás intuitivamente las formas de hacerlo más rápido. Aquí está mi otro artículo sobre cómo hacer que EF6x 5x sea más rápido (al menos para situaciones de lectura): EF6.x 5x faster