Entity Framework Core and NHibernate: It has existed since and recently has been developed entirely by the community, without any sponsor or umbrella company.
Entity Framework Core is the. In the beginning, it was part of. As part of the. NET Core initiative, it was totally rebuilt now targeting. NET Core, and as part of.
Since the beginning, it was closely linked to. NET and Visual Studio versions. NHibernate has had a couple of versions: Version 2 dropped support for. Version 3 introduced LINQ.
Version 4 started targeting. Version 5 added asynchronous programming, fixed TransactionScope support, and a lot of cleaning, including removing obsolete code. Version 1 had basic functionality with model-first and database-first workflows, and was released with. Version 4 came with. Version 5 brought enumerated types, spatial types, and table-valued function support. Version 6 added interceptors, logging, asynchronous operations, custom conventions, and support of stored procedures for CRUD operations.
Only basic functionality, plus the architecture to support non-relational databases. Still added interesting features such as shadow properties. NET Core 2 introduced owned entities, global filters, the LIKE operator, DbContext pooling, explicitly compiled queries, scalar function mappings,nd self-contained entity configuration classes. In fact, the EF Core family is almost totally unrelated to the original one, and even Code-First was totally new, even though the original version was still underneath it.
Platforms NHibernate now supports. NET 4 and higher running on Windows or platforms where Mono is available and as of version 5. There are no plans to have it support data sources other than relational databases.
EF Core runs on. NET Core, and therefore on any platform that supports it. It is based on a provider model that theoretically can work with any kind of data source, not just relational ones. Work is in progress for Azure Cosmos DB, and others are likely to follow.
Everything is built in. It needs the full. NET Core, of course. Internally, they are both quite extensible, with lots of moving parts, some of which can be replaced. Entity Framework Core builds upon. NET Core facilities like logging and dependency injection, and it leverages those for modifying internal components.
Pretty much anything can be switched. NHibernate does not use dependency injection and the way to replace each service is quite different from service to service.
Everything stems from it. With EF, we only need to worry about a DB Context; it includes all the mapping and configuration information, and exposes all APIs for interacting with the datasource. Supported databases Out of the box, NHibernate supports more than 10 different databases and versions, including: SQL Server including Azure.