兩者都是很好的解決方案,但我個人認爲NHibernate更適合繼承數據庫。這裏是一個很好的功能明智的比較 -
http://www.dennisdoomen.net/2013/03/entity-framework-56-vs-nhibernate-3.html
有一些事情是在NHibernate的明顯更好,比如二級緩存支持。文檔可能比EF稍微稀疏,但如果你願意通過學習曲線,NHibernate爲你提供了更多的功能。
FluentNHibernate非常適合將類型映射到底層表,但是有些地方您只需要恢復到XML映射。 NHibernate本身有一個新的競爭API,但我還沒有檢查它(上面的博客文章提到它)。
如果你想依靠VS工具支持,EF更好。然而,有時候會有一些魔法(例如,EF可以使用反射來填充對象的私有屬性,NHibernate不會這樣做;這取決於您如何看待它的優點或缺點)。 EF也適用於其他Microsoft提供的框架(例如RIA服務)。我也喜歡EF-auto遷移(當你使用代碼優先)。如果你想要更多的權力在你手中,並希望能夠調整事物的工作方式並明確區分顧慮(ORM只做ORM應該做的事情),NH似乎更好。然而,讓NH能夠訪問它們的所有屬性是有點令人煩惱的。
我已經使用它們,有時可能會有點笨重有時生成你想要的SQL;在這些5-10%的情況下,再下降一級並使用像Dapper,Massive或Petapoco這樣的微型企業。
編輯:
NHibernate的太能填充私人性質,貌似,所以這是我的一部分只是無知。
多大的項目是我們說?幾百個查詢,幾千?你是否優先搶先?沒有什麼事情會像直接查詢一樣快,或者像Dapper.NET那樣快,但依賴於代碼的使用方式仍然可以合理使用。 –
[Entity Framework 4 vs NHibernate]可能的重複(http://stackoverflow.com/questions/1639043/entity-framework-4-vs-nhibernate) – Paddy
看看下面的內容:http://stackoverflow.com/問題/ 699792/is-orm-slow-it-matter –