2008-10-30 27 views
7

我們準備在工作中啓動一個全新的項目,而不是遺留代碼。我們在過去使用過亞音速,我們對它很滿意。但那是在Linq之前。你今天會選擇什麼樣的數據層,Linq或Subsonic?

有沒有人不得不面對同樣的問題(Linq x Subsonic)?

你的決定是什麼?原因是什麼?

任何洞察讚賞。

+0

你的意思是LINQ或LINQ to SQL?因爲SubSonic從3.0開始支持LINQ。 – 2009-07-16 14:44:39

+0

當我問這個問題時,去年十月,Subsonic在版本2.1(沒有Linq)。 我想更新的問題應該是LinqToEntities x Subsonic 3.0.0.3(截至目前)。 – nandos 2009-07-16 16:38:40

+0

實體框架提供比Subsonic更好的性能:http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic – Tim 2009-07-16 14:41:17

回答

11

亞音速

優點:

  • 尼斯和簡單
  • 腳手架

缺點:

  • 方法簽名經常接受字符串PARMS(雖然我們鼓勵你使用DAO字符串常量),它可以被濫用。

請記住:

  • 需要無代碼的網站項目,放手模型生成(需要BuildProvider)。

的LINQ to SQL

優點:

  • 在IDE句法糖
  • MS支持
  • 查看SQL在IDE要執行
  • 允許不同模型中的擺弄水平,從自動生成到顯式定義再到目標t屬性。

缺點:

  • 複雜。你需要學習像DataContext這樣的新概念纔能有效。

請記住:

也評估ADO.NET Entity Frameworkhere

3

我喜歡LINQ的一件事,我不認爲SubSonic會優雅地處理,它會自動處理連接。

FROM a in db.Orders 
where a.Total > 100 
SELECT new {a.Item.Desc, a.Customer.Name}; 

會自動生成SQL像thisL

select i.DESC, c.NAME 
from ORDERS o 
inner join ITEMS on o.ItemID = i.ItemID 
inner join CUSTOMERS c on o.CustomerID = c.CUSTOMERID 
where o.TOTAL > 100 
0

linq to sql最大的風險是微軟會厭倦它並放棄它。有很多人猜測這已經發生,只有實體框架纔會更新。亞音速不會受此影響,更糟的情況是您有源代碼進行編輯。

0

我處於相同的情況。 LinQ更「視覺化」,你可以在vstudio中做所有事情,甚至Rob也承認亞音速有一些東西可以與之匹配。

IEnumerable,LINQDatasource(帶有自動分頁)和可視化建模讓我相信選擇Linonic而不是Subsonic。

1

NHibernate怎麼樣?新項目是否真的不合格?儘管如此,來自Java的人會發現它很熟悉,你也可以將它用於.NET 2.0和Mono。

0

您可能想要查看MS stops developing LINQ to SQ L發生的情況,因爲它似乎正在發生。 SubSonics最新版本更易於創建查詢並更易讀,然後是以前的版本。

1

我的經驗一直以SubSonic爲主。這是非常直接的部署,你會在半小時內完成你的DAL。請記住,這是瑞士軍刀,因爲它是爲實用設計的。基本上你會得到每個表生成的類,以及對集合進行延遲加載的能力。你也可以通過框架執行存儲過程,所以如果你有複雜的數據結構,你可以從數據庫中獲取它們並更新你手工製作的類。

我現在已經在5個主要項目中使用了它,並且我對它變得依賴的速度印象深刻。

1

我和Linq一起去了,因爲它是內置在框架中的。對於那些聲稱不會被微軟支持的公司來說......這是LinqToSql將被逐步淘汰。我相信其中一個計劃是將其吸收到實體框架中。

我現在正在使用實體框架。它也使用linq,基本上它就像linqToSql一樣,如果你選擇使用它,就會有更多的靈活性和強大的功能。

我傾向於避免第三方框架和orms,因爲它們最終也會消失。我相信他們有更多的機會死亡,因爲他們的生活來自有多少人對它感興趣並使用它。他們的生活也嚴重依賴於它的主要作者/貢獻者。