I’m working in a development company, which develops small to medium size web based projects, we mainly use Microsoft technology, currently we are in technology selection phase, and we are looking into ORMs, we need to select the standard ORM for our future projects, for now we narrowed the chooses into two: -
• Nhibernate: -
- Mature.
- Open source.
- Feature rich.
- Configurable and flexible, to the highest extends.
- Well supported by a strong community.
- Proven to be successful many places.
• EntityFramework : -
- A Microsoft product; which means tight integration with other Microsoft products.
- Highly Supported and plenty of resources online, with fairly strong communities online.
- Evolving very fast, fixes is coming out very fast and it is getting better day by day.
- LINQ.
- Lower learning curve than Nhibernate.
The technology is measured according to the following respectively: -
- Ease of use - time is really a critical thing in our project.
- Long term decision, I’m mean we are not going to keep shifting between technologies.
- Integration with Microsoft products.
- Support, in term of compliance tools (such as activerecord for Nhibernate), communities and releases.
- It’ll be the only standards that we’ll use.
- Flexibility in configuration.
- Features - we don't require a lot of complex mapping, nor 2nd level caching, and we can replace batching with SPs for now.
My Questions Choosing Entity Framework against Nhibernate, as our company future default implementation of ORM, what are the cons and pros for such a decision in the long run?
Don’t get me wrong on this; I know that Nhibernate is the right answer for the time being, but will it be the right choice for the near future, or even the far future, taking is consideration the fast evolution of EntityFramework.
some of the resources I have relied on with my research: -
http://ayende.com/blog/4351/nhibernate-vs-entity-framework-4-0
NHibernate, Entity Framework, active records or linq2sql
Which ORM tool should I use for .Net development
http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx