2010-08-10 69 views
2

我來自不同的語言,總是對使用什麼和不使用什麼有不同的看法。對於爲什麼使用或不使用LINQ to SQL,你有什麼看法和優缺點?LINQ to SQL - 使用還是不使用這是一個問題

另外我看到有一個LINQ到NHibernate這是值得使用,如果你有NHibernate?

我還沒有安裝NHibernate安裝。

謝謝

+1

您可能想知道爲什麼微軟同時提供LINQ-to-SQL和實體框架。微軟數據MVP Shawn Wildermuth在他最近的文章[應該尋找微軟故事趨勢?](http://wildermuth.com/2010/08/09/Should_You_Be_Looking_for_Trends_in_Microsoft_Stories)中提供了一個很好的解釋。他在文章的第二到最後一段提到了LINQ到SQL和EF。 – 2010-08-10 17:43:20

+0

我在大公司工作,所以我不打算構建小應用程序。我目前正在學習,所以我可以成爲未來更好的計劃。我有很多東西要學會確保我和其他人在同一頁面上。 – 2010-08-10 18:01:40

回答

4

我可能不會推薦使用LINQ to SQL在這一點上。如果您正在進行新的開發,我建議您改爲ADO.NET Entity Framework

這是一個更現代,積極開發的替代LINQ to SQL的替代方案,因爲它受到了微軟公司的廣泛關注。

至於LINQ to Nhibernate ...如果您已經計劃使用Nhibernate,這會給您帶來LINQ的好處。我個人非常喜歡在我的項目中使用LINQ,因爲我發現它使我的代碼編寫得更快,更易於維護,所以我強烈建議您這樣做。不過,我可能仍然會優先考慮使用Nhibernate進行.NET開發的EF(它內置於框架中,由MS等支持)。

0

這是很難回答,不知道你想用它來構建。

對於小規模項目,我的經驗是,您可以非常容易地使用LINQ到SQL來啓動並運行,並且很容易使用。但是,它確實缺乏一些功能(比如繼承,我相信)。此外,微軟已經停止進一步開發LINQ到SQL。

微軟當前的ORM/Persistence Framework是Entity Framework 4,它正在由MS積極開發;它具有比LINQ-to-SQL更多的功能,並且被貼上了更適合企業級應用程序的標籤。使用EF4,您可以在查詢中使用LINQ表達式,就像使用LINQ到SQL一樣。

另一個選擇是NHibernate,我用於當前的項目,根據我的經驗,這是兩個世界。它對你來說可能是有價值的,它是開源的。開始很容易,但要準備花一些時間學習更先進的概念。 LINQ-to-NHibernate在我們使用的版本(2.x)中還不是很成熟,但我認爲它在3.0中得到了很大的改進。您可以在LINQ中進行一些查詢,但好處是,您將能夠回到非常強大的HQL或Criterion API上;當你需要它時。

在我看來,這3個是目前.NET世界中最大的ORM競爭者。還有Subsonic或Castle ActiveRecord;我沒有經驗;但他們應該適合於小項目。我們需要仔細考慮你對ORM的需求,測試一些(編寫一些PoC代碼,模擬你將要做的數據訪問;看看它是多麼容易設置) 。對此很容易是/否。