Microsoft EF Goes Open Source

Recently Microsoft released the source code for the Entity Framework under an open source license. Now the whole ASP.NET MVC Stack including Web API, Razor is open source. They are open source projects but they are also supported by Microsoft and released Microsoft products suitable for use in any organization.

Visual Studio 2012 introduces much simpler API for async programming that leverages asynchronous support in the .NET framework 4.5. Asynchrony is essential for the activities that are potential blocking such as when your application accesses the web. Access to the web resource gets delayed and if such activity is blocked within a synchronous process the entire application must wait. In Asynchronous process, the application can continue further that doesn’t depend on the resource until the potentially blocking task finishes. Entity Framework 6 will support the new task-based asynchronous pattern when querying and saving data. This will greatly enhance the performance of the overall application having database connectivity (Not sure if NHibernate has road map to support this new feature in .net 4.5, any information on this is welcome!). Any ORM layer which is another layer of abstraction will introduce the overhead to the data access. With the introduction of EF 5.0, these overheads are reduced and are more focused on performance. Based on the benchmark test result, repeat execution time of the same LINQ query has be reduced by around 6 times and overall end-to-end application was found to be 67% faster. Some of the new features in EF 5.0 are Enum support, Spatial data types, performance enhancements, Data migration support, etc…

Entity framework is much more younger than its counterpart NHibernate. Nhibernate is another open source ORM (derived from Java Hibernate) having more features than Entity Framework. Nhibernate is also much harder to learn and to be productive in a short amount of time (higher learning curve). When it comes to integration with Microsoft technologies, it will come as no surprise that Entity Framework offers the best support (e.g. ASP.NET through Entity Data Source, ASP.NET Dynamic Data Services, WCF RIA Services etc.). Another point where EF is superior and where NHibernate lacks is up-to-date API reference and resources on MSDN. Both of them accomplish the same goal, which is mapping database objects to domain objects, but in different ways. Now that the EF has been made open source, more developers and their community will be working on it making it more robust, more efficient and more stable than ever.