NHibernate | Linq to SQL | Entity Framework | |
Mapping con Atributos | Si | Si | Si |
Mapping con XML | Si | Si | Si |
Persistencia Trasparente | Si | Parzial. Para la gestión de las colecciones y de los proxys necesitas usar de los tipo especificos. |
Parzial al estado acrtual. Las entidades deben implementar una interface. |
Persistencia Transitiva | Si | No | No |
Estrategias de Fetching | Si | Si | Si |
Estrategias de Herencia | Todas las estrategias | Solo las tablas con Jerarquía | Todas las estrategías |
Mapping Entity sobre más tablas | Previsto el porting da Hib 3.2 | No | Si |
Mapping de Value Type | Si | No | Si |
Lenguaje de Interrogación a Objetos | HQL (stringas) | Linq aplicado a DataContext | Linq to Entities (Aplicado a ObjectContext) per c# ey vb.net. eSQL (stringas) para todos los lenguajes. |
Lazy load | Si | Si | Si |
Mapping de llaves compuestas | Si | Si | Si |
Multi-database vendor | Si | No | Si |
Tracking estado entity | Contesto de Persistencia. | Contesto de Persistencia o Entity | ?? |
Identity Map | Si | Si | Si |
Caching de entity y query | Si | No | ?? |
Estensibilidad | Muy Granular,Arquitectura a plug-in en varias partes | Poco granular. IQuerableProvider es muy complicado. | ?? |
Disponibilida | Inmediata | De noviembre | De mitad 2008 |
Soporte a pagamento | Red Hat | Microsoft | Microsoft |
Nota:
Son los tres ORM…con mayor evolución.
[…] quería traeros una tabla de comparación entre NHibernate, LINQ to SQL y LINQ to Entities. No he podido verificar los datos de esta tabla, pero de ser correcta sería una interesante tabla […]
Hola… solo para correguir una cosita.
En NHibernate el soporte a pagamento no existe.
JBoss ya no suporta mas NH desde principio del 2007.
Abrazo.
Hola, que buena comparación, estaba pensando en escribir una y veo esta y me gustó mucho.
Algo que me dí cuenta en estos días, es que para la parte de Testing en Entity Framework, está muy en pañales, de hecho no hay mucho que ayude a hacer Testeo sobre entidades. En NHibernate está muy fuerte esto, por ejemplo podés inyectar tu propio ConnectionProvider y entonces controlar todas las conecciones que se habren y se cierran.
Además en EntityFramework, no veo muchas interfaces para poder mockear por ejemplo.
Una cosa para corregir, en NHibernate se pueden hacer queries utilizando 3 API’s: Criteria, HQL y SQL Nativo.
Un abrazo.