LinQ可以取代SQL語(yǔ)句嗎?
LINQ查詢(xún)和更新數(shù)據(jù)基本可以取代SQL語(yǔ)句,但創(chuàng)建和刪除數(shù)據(jù)庫(kù)文件等維護(hù)工作不能代替SQL語(yǔ)句,當(dāng)然也可以用VS2010創(chuàng)建數(shù)據(jù)庫(kù)文件,但不如數(shù)據(jù)庫(kù)工具使用SQL語(yǔ)言方便。查詢(xún)?nèi)绾Y選、排序、匯總、提取字段、分組和聯(lián)接等,LINQ的寫(xiě)法與SQL基本一樣,還多一項(xiàng)Lambda表達(dá)式。
在C#中引入LINQ是為了在編寫(xiě)和編譯數(shù)據(jù)庫(kù)代碼時(shí)就能知道是否有錯(cuò),編寫(xiě)時(shí)能得到LINQ類(lèi)庫(kù)的提示,例如要添加的屬性成員和關(guān)鍵字提示,使編程輕松方便。如果不用LINQ,SQL語(yǔ)句只能以字符串形式嵌入到執(zhí)行語(yǔ)句,編譯時(shí)發(fā)現(xiàn)不了字符串的錯(cuò)誤,運(yùn)行時(shí)出錯(cuò),讓人惱火。
另一個(gè)優(yōu)點(diǎn)是LINQ發(fā)展到LINQ to SQL,可以用O/R設(shè)計(jì)器處理數(shù)據(jù)庫(kù),把數(shù)據(jù)庫(kù)映射為C#中的類(lèi),為數(shù)據(jù)庫(kù)的可視化編程提供方便。參見(jiàn)《C#編程指南》(但堯,清華大學(xué)出版社2011年1月,可網(wǎng)購(gòu)),該書(shū)比較詳細(xì)討論LINQ處理數(shù)據(jù)庫(kù),有很多示例演示如何對(duì)SQL2008的示例數(shù)據(jù)庫(kù)AdventureWorks2008(以及DW2008,LT2008)的查詢(xún)更新排序優(yōu)化聯(lián)接等。