×
iFour Logo

Entity Framework vs NHibernate: Understand similarities and differences

iFour Team - March 22, 2021

Listening is fun too.

Straighten your back and cherish with coffee - PLAY !

Entity Framework vs NHibernate: Understand similarities and differences

Entity Framework and NHibernate are Object-relational mapping frameworks (ORM) and are used to map database schema to domain objects in any object-oriented language.

Table of Content

What is Entity Framework?


Entity Framework is an open-source and object-relational mapping (ORM) framework and used to include business logic in the application. Entity framework developed by Microsoft and first released in 2008 and no source code was available to be used for free because of license but now it is free to be used. Entity Framework is similar to another object-relational framework and provides mechanisms for data storage and data access from the database.

Entity framework has the following features like tracking, identity relations, lazy loading, query translation so that developers need not focus on data access fundamentals.

Seeking to hire DOT NET Developers for your project?

What is NHibernate?


Nhibernate is also free and open-source object-relational mapping (ORM) architecture and provides similar objectives to object-relational mapping (ORM) architecture.

NHibernate maps .Net classes to a database table and provide database query and retrievals facilities to the Asp.Net project. Object-relational mapping tools us used to map object properties to the column of the table in the database.

Version History


 

Entity Framework

Version 1 -> Version 1 was released with .Net 3.5 service pack1 and provide support for model-first and database first workflow.

Version 4 ->Version 4 was released with .Net 4 and provide support for lazy loading, self-tracking, Plain object CLR object (POCOs), and generate Text template transformation toolkit (T4).

Version 4.1 and 4.3 ->Version 4.1 and 4.3 provides support for the code first development model with cleaner API and also provide migration through NuGet 4.3.

Version 5 ->Version 5 provides support for enumerated type, spatial type, table-valued function.

Version 6 ->Version 6 provide support for interceptor, logging, asynchronous operation, custom conventions, store procedure for CRUD operations.

.Net core 1 -> .Net core 1 provide basic functionalities and provide support for non-relational database and add shadow property.

.Net core 1.1 ->.Net core 1.1 provide support for mapping fields, explicit loading, connection resiliency, and APIs.

.Net Core 2 ->.Net core 2 provide support for operator, DbContext, pooling, explicitly complied queries, scalar function mappings, and self-contained entity configuration, classes.

NHibernate

Version 1 -> Version 1 was original and didn’t support generics

Version 2 -> Version 2 dropped support for .Net 1.x.

Version 3 -> Version 3 provides support for LINQ, QueryOver, and Lazy loading properties.

Version 3.2 and 3.3 ->Version 3.2 and 3.3 support fluent configuration and conventions, mapping of views, HQL (Hibernate query language), and integrated byte code generator.

Version 4 -> Version 4 target .Net 4 and BCL (Base class library).

Version 5 ->Version 5 provides support for asynchronous programming, TransactionScope with cleaning with removing absolute code.

Version 5.1 -> Version 5 provide support for .Net core.

Platforms


 

Entity Framework

Entity Framework support any platform because Entity framework runs on .Net core and it is based on a provider model that theoretically can work with any database except relational.

NHibernate

NHibernate support .Net 4 and mono which is available in higher running on windows or platform and version 5.1 support .Net core. .Nhibernate supports relational databases and no plan to support non-relational databases.

Platforms

NHibernate is a single DLL that is distributed through NuGet with no other dependency.NHibernate required order sets where lesi. Collections are also needed. In NHibernate, everything in built-in needs the full .NET framework or .NET core.

On other hand, the Entity framework has multiple DLL in NuGet packages. Entity framework provides dependencies are brought along as needed.

Want to hire ReactJS programmer for your business project?

Entity framework builds on .Net core and provided features like logging and dependency injection and its internal components.

NHibernate doesn't use dependency injection therefore a way of replacing service is quite different from service to service. NHibernate is not extensible as an entity framework.

NHibernate uses a configuration object and it produces a session factory. The session is produced by the session factory which are lightweight abstractions encapsulating an ADO.Net connection.

Entity framework use DbContect which includes mapping and configuration information and exposes all APIs and communicates with the database. It is a simple model but separation of concerns is efficient in NHibernate.

Supported database


 

Entity Framework

Entity framework supports SQL Server, SQLite, In-memory. In-memory is used for unit testing. Entity framework works on Cosmos DB and Oracle Database.

NHibernate

NHibernate support SQL Server, SQL Server CE, Oracle Database, Inges, PostgresSQL, MySQL, DB2, Sybase, Informix, SQLite, Firebird, ODBC(open-source connectivity), or OLE (Object Linking and Embedding)DB.

Configuration and mapping

Entity framework used code-based (fluent) configuration or attribute-based (fluent) mapping.

NHibernate uses XML and Fluent configuration and mapping. NHibernate Attributes is used to provide attribute mapping. NHibernate provides custom conventions and EF doesn't provide them.

Both of them need mapping and both can map non-public members, properties, and fields and both provide a notion of value types. Shadow property (Entities that are part of DB schema, but not mapped in the class model) is supported by both.

Table inheritance


NHibernate provides Single table inheritance, Class table inheritance, Concrete table inheritance.

Entity framework supports single table inheritance /Table per class hierarchy.

Primary key generation


EF support auto-generated IDENTITY key on SQL Server and SQLite, sequence on SQL server, and manually assigned values.

NHibernate provides identity on SQL server/Sybase and auto-increment value in other databases, sequence, database-independent high-low algorithm, High-low based on sequence, flavors of GUIDs (Globally unique identifiers).

Querying and modification


EF core use LINQ and SQL for query and doesn’t provide string type insert, update and delete and doesn’t provide support for grouping and no projection to non-entity types.

NHibernate provides LINQ, Criteria API, HQL, SQL, QueryOver, and all support pagination.

NHibernate support store procedure which is not supported by EF. In NHibernate, multiple queries can be queued, executed, and retrieved at the same time. Asynchronous query and modification are supported by both.

Looking for the Best ASP.Net Web Development Company ? Your Search ends here.

Migration/Database generation


Migration API is used by EF and NHibernate to generate database and update schema – automatic or based on request.

Lazy and Explicit loading


The current version of EF doesn't support lazy loading, only explicit or eager loading of associated entities and collection support.

NHibernate support lazy loading of associated entities, collection, and even single properties. NHibernate supports eager loading and explicit loading.

Conclusion


In this blog, we have discussed similarities and differences between Entity Framework and NHibernate. Entity Framework and NHibernate are Object-relational mapping frameworks (ORM) and are used to map database schema to domain objects in any object-oriented language.

Entity Framework vs NHibernate: Understand similarities and differences Entity Framework and NHibernate are Object-relational mapping frameworks (ORM) and are used to map database schema to domain objects in any object-oriented language. Table of Content 1. What is Entity Framework? 2. What is NHibernate? 3. Version History 3.1. Entity Framework 3.2. NHibernate 4. Platforms 4.1. Entity Framework 4.2. NHibernate 4.3. Platforms 5. Supported database 5.1. Entity Framework 5.2. NHibernate 5.3. Configuration and mapping 6. Table inheritance 7. Primary key generation 8. Querying and modification 9. Migration/Database generation 10. Lazy and Explicit loading 11. Conclusion In this blog, we will see the differences and similarities between Entity Framework and NHibernate. What is Entity Framework? Entity Framework is an open-source and object-relational mapping (ORM) framework and used to include business logic in the application. Entity framework developed by Microsoft and first released in 2008 and no source code was available to be used for free because of license but now it is free to be used. Entity Framework is similar to another object-relational framework and provides mechanisms for data storage and data access from the database. Entity framework has the following features like tracking, identity relations, lazy loading, query translation so that developers need not focus on data access fundamentals. Seeking to hire DOT NET Developers for your project? Contact now What is NHibernate? Nhibernate is also free and open-source object-relational mapping (ORM) architecture and provides similar objectives to object-relational mapping (ORM) architecture. NHibernate maps .Net classes to a database table and provide database query and retrievals facilities to the Asp.Net project. Object-relational mapping tools us used to map object properties to the column of the table in the database. Version History   Entity Framework Version 1 -> Version 1 was released with .Net 3.5 service pack1 and provide support for model-first and database first workflow. Version 4 ->Version 4 was released with .Net 4 and provide support for lazy loading, self-tracking, Plain object CLR object (POCOs), and generate Text template transformation toolkit (T4). Version 4.1 and 4.3 ->Version 4.1 and 4.3 provides support for the code first development model with cleaner API and also provide migration through NuGet 4.3. Version 5 ->Version 5 provides support for enumerated type, spatial type, table-valued function. Version 6 ->Version 6 provide support for interceptor, logging, asynchronous operation, custom conventions, store procedure for CRUD operations. .Net core 1 -> .Net core 1 provide basic functionalities and provide support for non-relational database and add shadow property. .Net core 1.1 ->.Net core 1.1 provide support for mapping fields, explicit loading, connection resiliency, and APIs. .Net Core 2 ->.Net core 2 provide support for operator, DbContext, pooling, explicitly complied queries, scalar function mappings, and self-contained entity configuration, classes. Read More: Which Orm Model Is Suitable For Asp.net Application - Nhibernate Vs Entity Framework NHibernate Version 1 -> Version 1 was original and didn’t support generics Version 2 -> Version 2 dropped support for .Net 1.x. Version 3 -> Version 3 provides support for LINQ, QueryOver, and Lazy loading properties. Version 3.2 and 3.3 ->Version 3.2 and 3.3 support fluent configuration and conventions, mapping of views, HQL (Hibernate query language), and integrated byte code generator. Version 4 -> Version 4 target .Net 4 and BCL (Base class library). Version 5 ->Version 5 provides support for asynchronous programming, TransactionScope with cleaning with removing absolute code. Version 5.1 -> Version 5 provide support for .Net core. Platforms   Entity Framework Entity Framework support any platform because Entity framework runs on .Net core and it is based on a provider model that theoretically can work with any database except relational. NHibernate NHibernate support .Net 4 and mono which is available in higher running on windows or platform and version 5.1 support .Net core. .Nhibernate supports relational databases and no plan to support non-relational databases. Platforms NHibernate is a single DLL that is distributed through NuGet with no other dependency.NHibernate required order sets where lesi. Collections are also needed. In NHibernate, everything in built-in needs the full .NET framework or .NET core. On other hand, the Entity framework has multiple DLL in NuGet packages. Entity framework provides dependencies are brought along as needed. Want to hire ReactJS programmer for your business project? Contact now Entity framework builds on .Net core and provided features like logging and dependency injection and its internal components. NHibernate doesn't use dependency injection therefore a way of replacing service is quite different from service to service. NHibernate is not extensible as an entity framework. NHibernate uses a configuration object and it produces a session factory. The session is produced by the session factory which are lightweight abstractions encapsulating an ADO.Net connection. Entity framework use DbContect which includes mapping and configuration information and exposes all APIs and communicates with the database. It is a simple model but separation of concerns is efficient in NHibernate. Supported database   Entity Framework Entity framework supports SQL Server, SQLite, In-memory. In-memory is used for unit testing. Entity framework works on Cosmos DB and Oracle Database. NHibernate NHibernate support SQL Server, SQL Server CE, Oracle Database, Inges, PostgresSQL, MySQL, DB2, Sybase, Informix, SQLite, Firebird, ODBC(open-source connectivity), or OLE (Object Linking and Embedding)DB. Configuration and mapping Entity framework used code-based (fluent) configuration or attribute-based (fluent) mapping. NHibernate uses XML and Fluent configuration and mapping. NHibernate Attributes is used to provide attribute mapping. NHibernate provides custom conventions and EF doesn't provide them. Both of them need mapping and both can map non-public members, properties, and fields and both provide a notion of value types. Shadow property (Entities that are part of DB schema, but not mapped in the class model) is supported by both. Table inheritance NHibernate provides Single table inheritance, Class table inheritance, Concrete table inheritance. Entity framework supports single table inheritance /Table per class hierarchy. Primary key generation EF support auto-generated IDENTITY key on SQL Server and SQLite, sequence on SQL server, and manually assigned values. NHibernate provides identity on SQL server/Sybase and auto-increment value in other databases, sequence, database-independent high-low algorithm, High-low based on sequence, flavors of GUIDs (Globally unique identifiers). Querying and modification EF core use LINQ and SQL for query and doesn’t provide string type insert, update and delete and doesn’t provide support for grouping and no projection to non-entity types. NHibernate provides LINQ, Criteria API, HQL, SQL, QueryOver, and all support pagination. NHibernate support store procedure which is not supported by EF. In NHibernate, multiple queries can be queued, executed, and retrieved at the same time. Asynchronous query and modification are supported by both. Looking for the Best ASP.Net Web Development Company ? Your Search ends here. Contact us Migration/Database generation Migration API is used by EF and NHibernate to generate database and update schema – automatic or based on request. Lazy and Explicit loading The current version of EF doesn't support lazy loading, only explicit or eager loading of associated entities and collection support. NHibernate support lazy loading of associated entities, collection, and even single properties. NHibernate supports eager loading and explicit loading. Conclusion In this blog, we have discussed similarities and differences between Entity Framework and NHibernate. Entity Framework and NHibernate are Object-relational mapping frameworks (ORM) and are used to map database schema to domain objects in any object-oriented language.

Categories

Ensure your sustainable growth with our team

Talk to our experts
Sustainable
Sustainable
 

Blog Our insights

Key factors to consider before choosing Customized or Off-the-shelf software
Key factors to consider before choosing Customized or Off-the-shelf software

Table of Content 1.What is COTS? 2.What are the advantages of Off-the-shelf software development? 3.What are the advantages of Custom software development? 4.Customized...

Off-the-shelf vs custom software development: Choosing the best for business success.
Off-the-shelf vs custom software development: Choosing the best for business success.

Table of Content 1.What is Custom software development? 2.What is Off-the-shore software development? 3.How to choose the best software for business? 4.Off-the-shelf...

Java Development Unleashed: The Next Chapter of Revolutionary Trends and Developments
Java Development Unleashed: The Next Chapter of Revolutionary Trends and Developments

Table of Content 1.Does Java have scope in the future? 2.Will Java developers still be in demand in 2023? 3.Emerging trends and key developments to know for Java 4.What...