2010-08-08 9 views
6

Estoy buscando un buen ORM para un próximo proyecto.Cuál es el mejor ORM con estos requisitos

La base de datos tendrá alrededor de 1000 a 1200 tablas, y estará tanto en SQL Server como en Oracle, que se usará según las necesidades empresariales de los clientes. Además, algunas partes del proyecto funcionarán con los servicios de WCF. Quiero un diseñador o algo así. Buena compatibilidad con LINQ. Rendimiento aceptable.

He intentado DataObjects.Net pero no tiene ningún diseñador. No podemos codificar todas esas tablas ni usar el generador de código. Y no estoy seguro de si DataObjects.Net admite cambiar de base de datos. También estoy familiarizado con EF4 pero no puede admitir ambas bases de datos juntas, y cambiar bases de datos manualmente (modificar el archivo edmx) es un problema en ... para el trabajo de mantenimiento.

Gracias de antemano.

Editar: Parece OpenAccess y LLBLGEN Pro son diseñador, pero no tengo la experiencia con ellos.

+0

No conozco a nadie con un diseñador que funcione bien con esa cantidad de objetos. Lo mejor que puedes obtener es bastante LLBLGEN Pro, simplemente porque es el ÚNICO con un diseñador DECENTE que incluso se puede usar con 1000-1200 entidades (EntityFramework prácticamente no entra en "ningún diseñador" con esta cantidad, es totalmente inutilizable) . – TomTom

+0

Creo que esta pregunta es lo suficientemente específica como para estar exento del motivo cercano "no constructivo". –

Respuesta

7

Aún votaría por Entity Framework v4 - EF4.

Después de todo:

  • puede tener varios archivos EDMX, no hay problema - una para SQL Server, uno para Oracle

  • se puede poner los en su propia biblioteca de clases, y luego carga o, o el otro, o ambos, si es necesario, en tiempo de ejecución (p. ej.mediante el uso de la Managed Extensibility Framework o algo de su preferencia)

  • se puede llegar fácilmente a los archivos EDMX en bases de datos utilizando las cadenas de conexión - en realidad no es difícil en absoluto

+0

I segundo @marc. EF4 tiene soporte de diseñador y buen soporte de linq y la idea de @marc de mantener 2 archivos EDMX podría aliviar el dolor del soporte RDBMS múltiple. – Sruly

+0

En realidad, si tiene aproximadamente 1200 tablas, realmente no debería tener solo 1 archivo edmx. Eso nunca funcionaría en cuanto al rendimiento, teniendo en cuenta todo el seguimiento que el contexto debería hacer. Aún necesitará tener múltiples edmx para los servidores Oracle y SQL. –

+0

@Stephane: sí, buen punto: cada EDMX no debería tener más de unas 200 tablas. Por lo general, no es tan difícil dividir la aplicación en grupos de 200 (o menos) tablas –

2

Dada esta información, sugiero consultar NHibernate (y/o fluent-nhibernate).

El elemento que tendrá que considerar es el rendimiento. Esto depende en gran medida de la naturaleza de su aplicación. Las tablas de 1.000 a 1.200 suenan masivas, por lo que recomiendo ejecutar definitivamente una serie de pruebas de rendimiento significativas (además de todas las otras pruebas) antes de finalizar la decisión.

Editar: De hecho, el mejor lugar para comenzar NHibernate es nhibernate.info (¡Gracias, Justin!).

+0

¿Por NHibernate? Para disminuir el tiempo de modelado de la base de datos a objetos, queremos usar un diseñador, etc. ¿Tiene NHibernate algún diseñador? – Salar

+0

De acuerdo con estas pruebas http://ormbattle.net/ NHibernate no funciona bien en comparación con otros. – Salar

+0

@Salor - Depende de la categoría, NHibernate funciona mejor en algunos que en otros y viceversa. –

1

También sugeriría NHibernate pero el lugar para la investigación es definitivamente NHForge:

http://nhibernate.info/

Aquí está el resumen de características de alto nivel (incluyendo LINQ):

http://nhibernate.info/doc/nhibernate-features.html

Hay algunos diseñadores disponibles, incluyendo LLBLGen Pro:

http://nhibernate.info/doc/commercial-product-ecosystem.html

NHibernate 3 está en alfa, pero ahora sé que ya está siendo utilizado en la producción de algunos lugares. Esa podría ser la mejor manera de ir para un nuevo proyecto.

+0

Sí, estoy de acuerdo. El mejor lugar para comenzar es NHForge. Actualizaré mi respuesta en consecuencia. – Manfred

1

Creo que tendrá que elegir su ORM y herramienta de diseño por separado. Por ejemplo, vaya con EF y LLBLGEN, o NHibernate y CodeSmith, o NHibernate y LLBLGEN, etc.

+0

Buen punto, voy a usar mi propio generador con EF4. – Salar

2

OpenAccess también puede hacer el trabajo por usted. Puede usar los múltiples archivos .rlinq y el enfoque de ensamblaje por base de datos como se sugiere con Entity Framework. El beneficio que veo para usted sería el apoyo que obtendrá de Telerik, ya que hay muchas posibilidades de que golpee una roca o dos mientras desarrolla una solución de tales proporciones.

Cuestiones relacionadas