為什麼需要LINQ

10 則留言:

Fish 提到...

少打程式碼->不用作SQL語法的組合
減少開發時間->少打程式碼與因SQL語法的錯誤偵錯
實現創意門檻低->低階幫您作掉了
相對的彈性低和演算法不好時無法改善
且只針對XML Object DB還是有一些少
雖然很強大

不過資料的定義裡還包含了多媒體這一塊XD
最後一句是開玩笑的

康廷數位 提到...

LINQ 的真正核心在集合物件,也就是LINQ to Object 這一部份
不過這門技術太新,技術人員還需要時間下去消化
熟了,就能生巧,巧了就知道好用在那裏,無論如何,它的未來是璀燦的,至少我是這麼認為,這,真的不是玩笑話。XD

匿名 提到...

很想知道LINQ和NHibernate的差异。感觉NHibernate也较好的实现ORM了。LINQ的意义又何在呢?LINQ就是MS自己的NHibernate么?

康廷數位 提到...

NHB我並沒有研究,只知道它是從Hibernate移植過來的,實作O/R Mapping的一種技術。

我想,這麼說好了,LINQ並非為了關聯式資料庫的存取而設計的,它的用途是全方位的,只是它經由 VS 2008同時支援了 O/R Mapping ,透過出色的視覺化設計工具就可以輕易的完成相關的工作。

如果你看一下「LINQ最佳實務講座」這本書的相關介紹頁與介紹文章,其中對LINQ作了還算清楚的闡述,對於LINQ這門技術的瞭解應該會有一定的幫助。

MS技術一直以來最大的特色就是封閉,也因此開發人員不太需要去思考處理問題該用那一種技術,因為官方的解決方案很明顯的就那些,相對的,這種因為在Java平台發展的不錯而被移植過來的東西,應該只會是過渡性,事實上,LINQ現在已經正式釋出了,這些事情,用它來處理就可以了。

LINQ是MS統一資料存取操作的一門技術,未來,任何資料來源,都可以用LINQ處理,儘管目前只有集合、XML與關聯式資料庫,所以,建議將重心放在LINQ,應該是比較好的。

匿名 提到...

噗~hibernate跟LINQ怎麼能比!!!hibernate是成功的產品?!
但是我現在等著看LINQ怎麼失敗!!

M$如果真的想走O/R Mapping 應該開放原始碼全力支持hibernate才對~~~

康廷數位 提到...

為什麼要支持hibernate ??
MS有能力發展自己的東西
然後讓市場擁抱它
這是他的能耐呀…
MS打過太多好仗啦,老兄

至於等著看LINQ怎麼失敗 ??
Silverlight 它都敢跟 Flash 玩了
.NET都敢在Java成功那麼久之後再出來跟他玩
我是不認為LINQ這種小領域的技術會有什麼失敗不失敗的

匿名 提到...

一般人都是以資料庫存取當作出發點來看Linq,所以往往把Linq侷限在Linq to SQL這一塊,我想這也是老是有人拿它跟hibernate相比的原因,但Linq to SQL只是其中最常見的應用之一,它的核心精神根本不在此啊;當Linq用愈熟,就愈覺得它哪裡都能用,幾乎已成為程式語法的一部份;寫程式不外乎就是資料操作,只要是兩個以上集合的物件幾乎都忍不住用它(至少都會用到Lambda Expression),等於讓VB.NET & C#也擁有像SQL強大,簡捷方便的資料操作語法,這個部份我覺得這才是Linq的重點吧.所以為什麼還要和hibernate相比較呢?

康廷數位文教網 提到...

這位網友說的是,我們也一直提出這樣的觀念

LINQ 真的不是為了關聯式資料庫的存取而生的,SQL 已經無人可以取代了

hibernate這方面,.NET 還有完整的解決方案啦,至於一般的 USER,LINQ就像這位說的,使用幾次就知道它的妙用了,尤其是在前端的資料處理方面,還真的是無敵啊 ~~

匿名 提到...

目前在市面上看到新出來的新書,
像 Visual C# 2010、Visual Basic 2010、ASP.NET 4.0.....,雖然都有談到LINQ,但只是當作一個章節在教授,在存取資料時,都還是

SELECT * FROM .....,
INSERT INTO(....) VALUES(....)

連作者都還是依循過去的SQL,並不使用LINQ,這是為什麼呢?

康廷數位文教網 提到...

因為 LINQ 本來就不是用來存取資料呀,它跟資料庫沒有關係,它的用途支援前端資料的運算處理。

應用程式處理資料有兩個階段:

第一個階段:將資料從資料庫取出。
第二個階段:針對取出的資料進行處理。

SQL 用在第一個階段,LINQ 則是第二個階段。

所以任何與資料庫有關的互動都必須透過 SQL 來作,包含資料查詢、更新異動等等。

但資料取出來之後要進一步運算,或是與資料庫無關的資料處理,包含集合、陣列的複雜運算就可以交給LINQ 了,所以 你會看到 LINQ沒有所謂的更新之類的語法。