EF - все еще новорожденный в отношении стойкости объекта. Он использует базовое наследование объектов, которое иногда может привести к потере возможности наследования при проектировании. Это можно было бы исправить с помощью новой версии EF, и все же ему не хватает гибкости NHibernate.
NHibernate - это порт для .NET Hibernate в JAVA. Это, вероятно, примерно такая же зрелость сейчас, если я правильно помню из версии 3.0 NHibernate. Он использует либо сопоставление атрибутов, либо сопоставление XML, либо вы также можете использовать Fluent NHibernate или ConfORM , которые позволяют отображать ваши объекты объектно-ориентированным и, необязательно, на основе соглашения.
Несмотря на то, что EF4, кажется, в некоторых отношениях обеспечивает большую производительность, я все еще предпочитаю использовать NHibernate, поскольку он доказал лучшую гибкость с иностранными механизмами баз данных, отличными от SQL Server, IMHO.
Пожалуйста, убедитесь сами:
- NHibernate против Entity Framework 4.0 (Ayende) ;
- Entity Framework 4 против NHibernate (SO) ;
- EF4 по сравнению с NHibernate ;
- Сравнение производительности nHibernate и Entity Framework .
- .net ORM Сравнение (SO)