我想創建一個網站,有很多用戶,顯然擁有大量的數據庫,並且我沒有EF或NHibernate的經驗,對我來說推薦一個嗎?用MVC創建一個網站,哪個ORM更好,EF還是NHibernate?
回答
EF非常適合.NET和Visual Studio。在Visual Studio中給你一個非常好的設計器,並利用LINQ編寫非常易於閱讀的查詢。
對我來說,這是一個不容小覷的想法。毫無疑問,我會選擇EF4。
如果你是第一次做,我會建議你去與EF,因爲它很容易打到它沒有更多的配置和隱藏的屬性....沒有必要申請任何額外的努力只需添加對象,你的任務是完成。
但如果你看起來性能更好去NHibernate。
答案取決於您在後端使用的數據庫。如果您使用的是任何Microsoft數據庫,那麼EF就是要走的路。
Oracle沒有支持EF的客戶端(即將到來),因此您需要使用NHibernate與Oracle交談,直到他們更新客戶端。
我會去參加NHibernate,因爲它可以比EF更好地調整性能,並且可以跨不同的數據庫更好地移植。
第一次使用asp.net mvc時,可以考慮使用S#arp architecture。它使用NHibernate。在網站上清楚地說明了如何快速入門。
也沒有。
我過去一年使用過EF,而且我遇到的問題都不值得一提。
我已經告訴我的同齡人 - 如果我可以回去的時間,我會使用存儲過程與一個簡單的API抽象它。
要麼是使用「輕量級」的ORM,如Dapper或Massive。
EF給了我太多的膨脹,與關聯的複雜性(特別是繼承模型),錯誤從未修復,以及在無狀態環境(如MVC)中「更新」實體的問題。
真的不在乎我是否得到了低估 - 只是想把我的兩分錢。最初我喜歡EF,因爲我來自L2SQL背景,所以這是一個簡單的過渡。但是,一旦我開始在封面下挖掘,我發現它是多麼痛苦的工作。
這就是說 - 我沒有使用NHibernate所以我不能評論,只評論實體框架。
堅持靠近金屬 - 從長遠來看,您將獲得更好的表現。在「真實」模型中編寫代碼 - SQL,使用索引,讓SQL Server(或Oracle)的引擎做到最好。因爲LINQ框架的一致性和智能性,IMO(這就是我們在這裏可以做的所有觀點),當你有一個非基本模型時,LINQ-Entities並不會產生足夠好的SQL )。
我EF4的眼中釘:
無法急於負荷只有特定的 「類型」。例如,如果您將
Post
和Location
設置爲*..*
,並且您有Question
作爲一種郵政類型,則無法檢索Location
並且僅僅是Question
的。您必須急於加載全部Posts
,或使用匿名類型投影。一般來說,急切的加載是非常痛苦的。在無狀態的POCO場景中更新現有實體間的關係。同樣,如果你有一個
Post
,其中有許多Location
的,和你想變化的Location
現有Post
鏈接到,有沒有簡單的方法與MVC控制器動作這樣做。爲了讓EF在處理POCO時認定關係modified
,您需要將其設置爲已修改。但是如果你有POCO的話,關係通常是ICollection<TPOCO>
,所以你沒有這些內置的方法。當您執行Save
時,最終手動將實體狀態設置在OSM的內部。我最終手動合併實體,基本上是從左到右。沒有批處理語句。我相信NHibernate支持這個。這是EF的大問題,特別是如果您想在單次旅行中更新多個對象。我通常最終使用存儲過程,首先擊敗EF的要點。
無法將查找表映射到枚舉的。。好吧,這不是一個大問題,但它是一個令人討厭的問題。查找表是自然適合的枚舉,但EF根本不支持它 - 儘管從第1天開始社區提出請求。不知道爲什麼沒有放入。
- 1. 哪個更好,建立一個網站或使用CMS網站?
- 2. 克隆還是應用:哪個更好?
- 3. 哪個更好,創建物化視圖還是新表?
- 4. 哪個更好? Java開發還是Webworks?
- 5. 哪個更好? XML,INI還是其他?
- 6. 哪個更好?碳還是可可? (Mac)
- 7. PHP - 退出還是哪個更好?
- 8. MySQL - 哪個更好:SELECT還是SELECT COUNT?
- 9. 哪一個會更好一個會員的網站,Joomla或Drupal
- 10. 哪一個更好,對象創建還是簡單表達式評估?
- 11. 對於哪個更好的CMS?MVC還是MVP?
- 12. Neo4j,哪個更好:多重關係還是一個屬性?
- 13. Spree - 創建整個網站的偏好
- 14. IIS創建一個網站
- 15. 創建一個網站WAMP
- 16. 在Try塊中,爲多個異常創建一個Catch還是爲每個異常創建一個Catch更好?
- 17. 哪個地方更好地在servlet mvc中創建jdbc連接?
- 18. 創建移動網站哪一個使用MVC或.Net移動控件
- 19. 使用Angularjs創建groupon網站是個好主意嗎?
- 20. NHibernate集合映射哪個更好?
- 21. 哪一個更好?
- 22. 哪一個更好?
- 23. 哪一個更好?
- 24. 哪一個性能更好?交叉連接還是新表?
- 25. 哪一個更好的做法:全局常量還是#define?
- 26. 網站幫助 - 創建更好的ChatRoulette
- 27. 使用ASP.NET MVC創建一個完全基於ajax的網站
- 28. 用nanoc創建一個基本網站
- 29. 用Java創建一個動態網站
- 30. 是std :: move(a).m是一個xvalue還是一個prvalue?
可能重複[nhibernate ,實體框架,活動記錄或linq2sql](http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql) – 2011-06-06 10:17:10