2009-09-24 20 views
12

(Este debe ser un FAQ, por lo que esperamos que sea cerrado como duplicado, sin embargo no puedo encontrar una pregunta que contiene una buena visión general de las cuestiones etc. .)¿Cómo elegir un mapeo objeto relacional para .NET

Lo debe tener en cuenta cuando alguien elegir un ORM para un sistema .net?

Cómo son lo anterior dirigida por el ORM que son de uso común para los sistemas de .NET.

(bruja desbordamiento de pila cuestión debería vincular en una respuesta cuando me dice “considerar el uso de un ORM” para una pregunta .net)

hace en un deseo de proporcionar una nueva respuesta y obtener la recompensa?

+0

http://c2.com/cgi/wiki?ObjectRelationalToolComparisonDotNet – eschneider

Respuesta

9

Esta es la pregunta/respuesta principal a la que he estado apuntando a las personas en cuanto a elegir a.ORM NET:

NHibernate, Entity Framework, active records or linq2sql

me puso un montón de los "duplicar" preguntas de tipo en mi respuesta de que uno. Entonces, hay mucha lectura que puedes hacer desde una variedad de perspectivas diferentes.

También voy a tratar de responder a sus preguntas específicas:

¿Qué debe tener en cuenta cuando alguien elegir un ORM para un sistema de .NET?

  • Usted quiere asegurarse de que funciona con su base de datos. Si el diseño de la base de datos era estado de la técnica hace 15 años , muchos de los más pequeños y/o menos maduros ORM no funcionará con su falta de claves, relaciones extrañas, etc.

  • Quiere asegúrese de que funcione con su proveedor de bases de datos. El soporte de SQL Server es casi siempre disponible, pero otras bases de datos pueden o pueden no ser compatibles con varios ORMs (MYSQL parece ser la segunda base de datos más comúnmente soportada ).

  • Si desea generar su base de datos basada en sus clases .NET, necesita para asegurarse de que su ORM sea compatible con eso.

  • Si desea rendimiento, supongo que se mantenga alejado de la mala realización de queridos, pero los que nunca se haría un top 5 lista , así que mientras vas con un ORM que tiene cierta corriente calle cred, probablemente estés bien aquí.

  • Usted necesita para asegurarse de que tiene características que necesita compatibles: http://ayende.com/Blog/archive/2006/05/12/25ReasonsNotToWriteYourOwnObjectRelationalMapper.aspx

  • Considere los proveedores de tecnología y cómo fácilmente que puede o no ser capaz de escapar de ella (tanto para el proveedor de la base y el vendedor de ORM).

  • Considere cuánto quiere gastar.

  • Considere lo que quiere para el código generación.

  • Considere lo que quiere para la prueba de la unidad de apoyo.

  • Considere cuánto tiempo desea gastar investigando las diversas opciones .

  • Considere la comunidad que existe alrededor del ORM.

Hay muchas cosas para tener en cuenta. Estoy seguro de que podría pensar en más.Al final, una gran parte es situacional y debe tomar su propia decisión, que es lo mejor para usted y su proyecto.

Cómo están por encima de la dirigida por el ORM que son de uso común para los sistemas .net.

El único .NET ORM del que soy consciente cubre casi todas las necesidades que un proyecto .NET podría tener (menos los proveedores de bases de datos más oscuros) es NHibernate. Ha sido probado con muchas bases de datos "heredadas" en muchos escenarios diferentes.

+1

+1 para NHibernate –

0

No soy desarrollador de .net, pero deberías consultar nHibernate. Es la versión de .NET del estado del arte ORM para Java. Estoy seguro de que es una gran solución para .NET también, ya que hace que los objetos de mapeo sean bastante fáciles, pero aún así es lo suficientemente potente como para asignar objetos a casi cualquier tipo de esquema SQL.

2

ORM Battle
¡Un sitio web completo dedicado a analizar y comparar varios productos .NET ORM (Object Relational Mapping)!

Tenga en cuenta, sin embargo, que incluso el sitio web ORMBattle solo compara unos 7 u 8 ORM (aunque los que compara, parece que lo hace de manera bastante exhaustiva, pero consulte el descargo de responsabilidad a continuación).

Según el SharpToolBox website, ¡hay alrededor de 40 ORM disponibles! La lista de productos ORM y sus descripciones en el sitio web de SharpToolBox deberían darle un buen comienzo. Vea aquí: SharpToolBox Search Results for Object-Relational Mapping

Teniendo en cuenta que casi todos los desarrolladores y las necesidades de acceso a datos de cada aplicación pueden variar, será difícil encontrar una comparación completa entre todos ellos. Esta es probablemente la razón por la que existen más de 40 productos diferentes de ORM, ya que no existe una "talla única" en el mundo de ORM.

Además, tenga en cuenta que cualquier comparación entre productos ORM puede ser "defectuosa", ya que no siempre se puede estar seguro de que la funcionalidad de los distintos productos ORM está diseñada exactamente para los mismos fines. Un comentario de AJ en esta respuesta se vincula a un blog post por Ayende Rahien que describe exactamente este fenómeno cuando ORMBattle comparó NHibernate con otros ORM.

Creo que el mejor enfoque es mirar los puntos de referencia, y leer las descripciones de cada ORM, pero no tomar esas cosas literalmente, sino interpretar esas cifras en función de lo que su propia aplicación debería estar haciendo. Por ejemplo, si su aplicación lee y escribe registros de base de datos uno por vez, probablemente use un producto ORM completamente diferente de una aplicación que necesita procesar registros de bases de datos en lotes.

+1

La utilidad del análisis realizado por ORM Battle es muy controvertida ... una buena lectura: http://ayende.com/Blog/archive/2009/ 08/15/benchmarks-are-unsless-yes-again.aspx –

+0

@AJ - Artículo interesante. Estoy de acuerdo en que los puntos de referencia (de cualquier cosa) pueden ser engañosos. Esta es la razón por la cual cada persona que busca una herramienta ORM debe hacer su propia investigación debido a que todos (y sus necesidades) son diferentes. Los puntos de referencia a menudo pueden ser como estadísticas, ¡y sabemos lo útiles que pueden ser! ;) (http://www.quotegarden.com/statistics.html) – CraigTP

+0

Es por eso que hay una gran sección de preguntas frecuentes :) Ver http://ormbattle.net/index.php/faqs.html –

0

Elija entre NHibernate o Entity Framework. NHibernate es más extensible y generalmente tiene más funciones. Entity Framework funciona mejor y es fácil de usar con un amplio conjunto de funciones.

Ambos marcos son geniales, Entity Framework tiene una gran ventaja sobre NHibernate: es mucho más fácil trabajar, la fase de inicio puede ser bastante difícil. EF lo hace mucho mejor. Sin embargo, en algunas áreas, NHibernate es superior, p. cuando se trata de extender el marco NHibernate ofrece más opciones

Por último, atienda su llamada. Cualquiera de los dos nunca te decepcionará.

Cuestiones relacionadas