Asp.net-Mvc

哪個數據框架更適合 ASP.NET MVC 站點 - LINQ to SQL 或 NHibernate

  • July 18, 2012

我們即將開始一些 ASP.NET MVC 開發,並且多年來一直在使用我們自己的實體框架。然而,我們需要支持的不僅僅是我們的實體框架所能提供的,所以我想獲得一些關於將 MVC 與更健壯的框架一起使用的意見。我們已經縮小或選擇 NHibernate(使用 Fluent API)或 LINQ to SQL。

哪個框架最適合 MVC 風格的開發(我知道 SO 使用 LINQ to SQL)?

如果我們想支持 SQL Server、Oracle、MySQL - 是否排除 LINQ to SQL?

我在 MVC 中使用 Fluent NHibernate 和依賴注入(在我的例子中是 Ninject)取得了巨大的成功。

在我看來,任何成熟的 ORM 都應該與 MVC 一起工作。由於 MVC(模型/視圖/控制器)的性質將這三個關注點分開,因此任何 ORM 都應該非常適合“模型”角色。

作為剛剛從LINQ 切換到 SQL到 (Fluent) NHibernate 的人,這裡有一些我注意到的事情。

  1. LINQ to SQL 花了很長時間才弄清楚如何做相當於一個連接子類。經過多次修改,我在某處讀到這是不可能的。如果所有列都在同一個表中,它只能映射繼承。如果有幾列,那就太好了,但在我的情況下有很多,子類是其他子類的父類,依此類推。為了我的 ORM,我為什麼要把它們都放在一張桌子上?
  2. 從經驗來看,NHibernate 一直很健壯(有時對於小型快速項目來說太多了),雖然通過小型項目熟悉它,但我覺得它可能太多了,並且走 LINQ 到 SQL 的路線,因為我可以生成一個DBML文件並進入分鐘。
  3. 流暢的 NHibernate。兩全其美(在我的情況下)。我可以按照我想要的方式映射並擁有我想要的數據庫,而不必在我的域或數據模型中妥協。還有一個詞:自動映射…錦上添花。

一旦我發現限制並在使用 LINQ to SQL 時遇到了一些障礙,我將不得不使用另一個 ORM,但是 Fluent NHibernate 使這個選擇變得容易,我認為我不會離開它,除非出現這樣的情況工作更好。

所以,就像 Rob Scott 所說,問題是你如何抽像你的領域 => 數據模型?您是從域還是數據庫開始?關係有多複雜?如果您有任何繼承,我會說只是使用更豐富的 ORM 框架並為自己省去煩惱。

Fluent NHibernate 有一些我發現過的最好的文件,並且有如此多的支持、註釋、部落格和資源,以至於我討厭做任何更少的事情…… IMO!我在不到 24 小時內啟動並執行。

哦,如果您是 NHibernate 的新手,請拿起 NHibernate in Action 這本書來幫助潤滑輪子,儘管該框架也有很多幫助。

一個工具不工作的最好跡像是當你必須使用該工具時……我正在定制 LINQ to SQL,閱讀白皮書,各種瘋狂,它拒絕生成適當的查詢,就在我很想去的時候修改我的表和域,我說讓我試一試 Fluent,我很高興我做到了。

祝你好運。抱歉,回复太長了;這一切都在過去五天左右,所以我想我仍然趕上了:-)

引用自:https://stackoverflow.com/questions/927409