2009-06-28 11 views
7

Al iniciar un nuevo proyecto, se trata de un desarrollo 100% nuevo frente a una base de datos heredada muy grande (300 tablas). La base de datos no coincide demasiado bien con el modelo de negocio, así que mis ideas iniciales sobre dónde usar un ORM.Necesita consejo para la capa de acceso a datos .net grande

Obtuve una prueba de concepto trabajando bastante bien con NHibernate ... pero obtuve MUCHA administración que retrasa el uso de la herramienta de "código abierto" "no compatible".

¿Algún consejo sobre otra solución de ORM para usar? o consejos sobre el argumento NHibernate?

Muchas gracias.

+2

Si utiliza NHibernate u otra cosa, definitivamente le explico a la administración que el uso de herramientas de código abierto "no compatibles" no representa un riesgo mayor que el uso de productos comerciales. El trabajo de los gerentes es comprender cómo funciona el código abierto y estimar los riesgos en el desarrollo de forma adecuada. Los gerentes incompetentes no son una excusa para pasar a un producto inferior (a menos que seas Dilbert, por supuesto). – Paco

+0

Chiming en que NHProf es una herramienta extremadamente útil si estás usando NHibernate. – jfar

+2

Solo una actualización ... ¡¡¡fuimos a la ruta de NHibernate !!! Hicimos una prueba de concepto usando un par de orm líderes y NHibernate ganó. Simplemente indicó los hechos a la gerencia de riesgos y recompensas y ellos aprobaron la decisión. – Todd

Respuesta

1

He utilizado Entity Framework en mis dos últimos proyectos, estos han tenido una cantidad similar de tablas. Nos ha funcionado bien Dividimos las tablas en varios modelos de Entity Framework, max ca. 80 tablas en un modelo.

Entity Framework es más fácil de vender a la administración ya que es Microsoft.

+1

re: "X es más fácil de vender a la administración ya que es Microsoft". ... Ojalá fuera cierto por motivos reales, y no solo porque Microsoft es grande y tiene mucho dinero. Algunas veces sus cosas no son tan agudas. –

6

Si su administración está dispuesta a pagar por un ORM comercial, sería prudente considerar esa ruta.

Una limitación que puede tener (actualmente) con NHibernate (a menos que esté dispuesto a utilizar el código Alpha del proyecto NHibernateContrib) es que actualmente no tiene el lujo de utilizar un mecanismo LINQ/IQueryable para realizar consultas utilizando el una sintaxis de LINQ cada vez más familiar. Todavía tendrá los mecanismos muy flexibles de Criteria y HQl, solo depende si quiere comenzar a invertir en hacer todo 'el camino de LINQ' o no.

De mi investigación hasta ahora tiene bastantes opciones (todo el apoyo LINQ Consulta de):

Raw Entity Framework (hay socios comerciales que están agregando herramientas y características en la parte superior de ella también.)

Lightspeed parece una especie de LINQ-to- [lotes de bases de datos] con un buen soporte de tiempo de diseño.

Telerik OpenAccess parece similar a Lightspeed.

IdeaBlade DevForce se basa en EntityFrmework buts agrega algunas características de usabilidad. Si no está utilizando SQL Server, el uso de IdeaBlade TAMBIÉN requeriría comprar un proveedor de ORACLE-EF de un proveedor independiente como DevArt o DataDirect.

LLBLGen Pro Buena variedad de funciones y desarrollo activo. He estado por mucho tiempo.

DevArt también hacen buenas herramientas de acceso a datos y proveedores específicos del proveedor para LINQ.

[ACTUALIZACIÓN]Production-ready LINQ support ya está disponible en NHibernate!

4

¿Por qué no le preguntas a la dirección?

¿Cuántas soluciones de acceso a datos ha creado y eliminado Microsoft en el momento en que Hibernate/NHibernate han existido?

  • ADO
  • ADO.NET
  • conjuntos de datos de tipo firme
  • Linq2Sql
  • Marco de la entidad
  • Marco de la entidad V2

Durante este tiempo Hibernate/NHibernate han sido cada vez más y más maduro. No va a desaparecer

+0

Plus NHProf es un gran punto de venta, nombre un ORM de Microsoft que tiene su propia herramienta de soporte. – jfar

+0

Upvote para NHibernate. A pesar de eso, estoy esperando desesperadamente el soporte de LINQ. ^^ –

Cuestiones relacionadas