2009-09-04 12 views
49

Mi equipo está comenzando un nuevo proyecto en ASP.NET MVC, y nos estamos preguntando qué tecnología utilizar para el acceso a los datos. ¿Cómo decides cuál es el mejor? ¿Cuál tiene el mejor rendimiento? ¿Cuál es más fácil de usar y de mantener?NHibernate, Entity Framework, registros activos o linq2sql

+2

El registro activo es más un patrón de diseño que una tecnología [http://en.wikipedia.org/wiki/Active_record_pattern] a menos que se refiera a algo específico como Castle ActiveRecord [http://www.castleproject.org/ activerecord/index.html]? –

+0

lo obtuve, bueno, me refería al registro activo subsónico – Omu

+0

para F #, SQLProvider: https://github.com/fsprojects/SQLProvider –

Respuesta

68

Si .NET 4.0, elige entre NHibernate o Entity Framework. NHibernate es más extensible y generalmente tiene más funciones. Entity Framework funciona mejor para las empresas que prefieren tener lo que proporciona Microsoft. Ambas son opciones válidas y nadie ha publicado una comparación objetiva significativa de golpes por golpe. Esta es una de las mejores comparaciones no objetivas:

http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

Si .NET 3.5 o anterior, elija NHibernate.

Choosing Database and ORM for a .NET project

Which ORM tool should I use for .Net development

Easiest to learn and use .NET ORM framework?

Some suggestions on which .NET ORM to look at learning

Best ORM Tool

https://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net

https://stackoverflow.com/questions/249550/what-orm-frameworks-for-net-do-you-like-best

Best free ORM tools to use with .NET 2.0/3.5

https://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend

Después de 04 septiembre de 2009:

OR Mapping tool

O/RM Choice (not reliant on linq)

https://stackoverflow.com/questions/1469761/nhibernate-vs-entity-framework-vs-something-better

How to choose an object relational mapping for .net

Dicho esto, las cosas cambian. Ahora que NHibernate es compatible con Linq, creo que NHibernate es la opción más clara en la gran mayoría de las situaciones. Para una más larga y bastante hasta la fecha el análisis, no dude en leer esto:

.NET and ORM - Decisions, decisions

+1

Esta cuestión ha adquirido algunas respuestas por encima de la media, a pesar de que se trata de un DUP: http://stackoverflow.com/questions/5101974/comparison-entity -framework –

+1

Personalmente, me encantan ambos frameworks, pero Entity Framework tiene una gran ventaja sobre NHibernate: es mucho más fácil trabajar. Especialmente para las personas nuevas en NHibernate, 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. –

+0

Tenga una mirada en TinyDA https://github.com/kumait/TinyDA – Kumait

6

Mi preferencia es LLBLGenPro, un ORM realmente genial que funciona como era de esperar. No se basa en la configuración como entity framework o nhibernate, genera su DAL basado en su db (con mucha flexibilidad a través de sus herramientas).

http://www.llblgen.com/defaultgeneric.aspx

2

LINQ2SQL es probobly más fácil de usar. Entity Framework proporciona gran extensibilidad y la versión futura contendrá muchas mejoras.

Una regla clave para el rendimiento: escriba un código que sea fácil de mantener, leer y distribuir; si es lento, ¡optimízalo!

Creo que la diferencia de rendimiento entre los ORM hoy en día es evidente, por lo que debe elegir la que le resulte más cómoda y eficiente para trabajar.

+0

Nah;) https://github.com/FransBouma/LinqToSQL2 –

2

Entity Framework tiene un mejor mapeo de relaciones que linq2sql (por ejemplo, tiene relaciones múltiples múltiples).

No he usado los otros dos, pero utilicé Hibernate en Java y fue bastante fácil de usar.

+0

Podría usar PLINQO si desea soporte de relación muchos a muchos y usa LINQ-2-SQL. http://www.codesmithtools.com/product/frameworks –

1

Este blog post compara varias tecnologías de datos para .NET en varios aspectos (rendimiento, facilidad de mantenimiento, capacidad de prueba, etc.). Puede ser de alguna ayuda para su proceso de toma de decisiones.

+0

Michael, SUbSonic no es decente en absoluto. Realmente no entiendo por qué las personas lo intentan. Solo su conjunto de 300 Kb, p. Ej.4 Mb @ OpenAccess: debe quedar claro que es solo un pequeño juguete. Y olvídate de LINQ allí. Apuesto a que su soporte LINQ nunca sería comparable a otros. –

+0

Lo sentimos, "SubSonic" y "Just su" => "Comparar su";) –

0

Me enfrento al mismo dilema. LINQ2SQL le dará más flexibilidad y control inmediato sobre el acceso a los datos, , sin embargo, Entity Framework es la solución "empresarial". Actualmente estoy intentando esto - SubSonic y me veo muy prometedor.

0

Para comparar ORM - echar un vistazo en http://ormbattle.net/

+6

Ese sitio ya tiene una muy mala reputación. :( –

+1

De acuerdo, ¡tiene que ver qué compañía de ORM admite este sitio web! – Codezy

+0

Chicos, visite Preguntas frecuentes y Blog @ ORMBattle, explican mucho. Michael, este sitio tiene mala reputación _por usted_ - Sospecho que porque SubSonic promociona aquí muestra su verdadera cara allí. –

1

Mi elección es Devart LinqConnect (http: // www. devart.com/linqconnect/). Este producto es tan fácil de usar como LINQ to SQL (e incluso es compatible con él) y, al mismo tiempo, ofrece funciones avanzadas de ORM, como Entity Framework. Yo prefiero su diseñador visual y sus características ORM:

  • tipos complejos
  • Lazy Loading
  • PLINQ
0

He estado usando Entity Framework (Código primero) y NHibernate desde hace algún tiempo , y prefiero nHibernate, específicamente fluido. Parece que me da mucha más flexibilidad en la forma de asignar mis objetos a la base de datos. Además, otorga un control mucho mayor sobre la carga diferida y las acciones en cascada sobre los objetos.

Cuestiones relacionadas