【摘要】LINQ技術(shù)是NETFramework 3.5版本的一個新的技術(shù),筆者主要結(jié)合自身的工作,介紹了在網(wǎng)站開發(fā)中如何建LINQ to SQL實(shí)體和符合開發(fā)環(huán)境的數(shù)據(jù)訪問層,以及如何使用LINQ to SOL進(jìn)行數(shù)據(jù)庫操作,希望能給同行提供幫助。
【關(guān)鍵詞】LINQ;數(shù)據(jù)綁定;ASP.NET
在網(wǎng)站的開發(fā)開發(fā)過程中,經(jīng)常用到各種各樣的查詢,例如產(chǎn)品動態(tài)的切換、網(wǎng)站地圖的形成和各種數(shù)據(jù)的查詢等,它們在與數(shù)據(jù)庫交互的時(shí)候,是非常麻煩是的事情。在一個數(shù)據(jù)源中尋求數(shù)據(jù)的過程往往就是查詢的過程。并且從現(xiàn)在很多的數(shù)據(jù)源早已形成各種查詢語言,網(wǎng)站開發(fā)者面對各種類型的數(shù)據(jù)就要重新學(xué)習(xí)不同的查詢語言,在這種情況下,LINQ技術(shù)的應(yīng)用正好緩解了這種非常繁瑣的情況。本文介紹分析了在網(wǎng)站開發(fā)中利用LINQ技術(shù)訪問數(shù)據(jù)庫的步驟,希望能給同行提供幫助。
一、如何建立LINQ to SQL實(shí)體
實(shí)體類的屬性映射在相應(yīng)的圖表中的列,實(shí)體是描繪映射到圖或者數(shù)據(jù)庫中的類。在使用的Visual Studio2008中,我們能夠應(yīng)用O/R設(shè)計(jì)器創(chuàng)建實(shí)體。通過這種設(shè)計(jì)器建立實(shí)體的程序非常簡單,只要在“服務(wù)器資源管理器”中,尋找到網(wǎng)站曾經(jīng)使用的視圖或者數(shù)據(jù)庫表,然后把此視圖或者數(shù)據(jù)庫表移動到O/R設(shè)計(jì)器上就可以了。
二、建立適合網(wǎng)站開發(fā)環(huán)境的數(shù)據(jù)訪問層
我們在網(wǎng)站的研發(fā)過程中,可以修改LINQ模型,讓它能夠進(jìn)行很多的操作,例如為它提供比較多的查詢方式和靈活多樣的數(shù)據(jù)庫表查詢等。
現(xiàn)在我們假設(shè)與數(shù)據(jù)庫及表對應(yīng)的類已經(jīng)創(chuàng)建的前提下,以Nothwind數(shù)據(jù)庫中的數(shù)據(jù)表為例進(jìn)行數(shù)據(jù)操作。例如在LINQ的模型中加入自己的查詢方式:
public static IEnumerable
{
IEnumerable
return results;
}
另外,我們還能進(jìn)一步封裝LINQ中數(shù)據(jù),使對下層的LINQ命令對上層的用戶做隱藏,這樣更加適合對象的概念.
public[Enumerable
{
IEnumerable
select entitys;
return results;
}
這樣對于業(yè)務(wù)邏輯層,就更加有利于面向?qū)ο蟮臄?shù)據(jù)開發(fā),更加面向?qū)ο蠡?/p>
對于這些模型的修改,我們既可以讓LINQ為網(wǎng)站服務(wù)的更加靈活,又可以讓我們更加靈活對數(shù)據(jù)的操作,達(dá)到兩全其美的效果。因此我們都會在網(wǎng)站的研發(fā)中,適當(dāng)?shù)男薷腖INQ的數(shù)據(jù)訪問方式,建立自己的訪問層。
三、使用LINQ to SOL執(zhí)行標(biāo)準(zhǔn)數(shù)據(jù)庫操作
在使用LINQ的過程中,我們可以將每個數(shù)據(jù)庫表轉(zhuǎn)為實(shí)體類的形式,把相應(yīng)的數(shù)據(jù)操作,轉(zhuǎn)化為對實(shí)體對象的操作,對類的屬性的操作就是對字段的操作,方法操作是由添加、修改、刪除、查詢等方式操作轉(zhuǎn)化而來,把面向?qū)ο蟮母拍钆c嵌入式的SQL語句接軌,這樣更加有利于程序開發(fā)。
1.LINQ對象的創(chuàng)建
在LINQ技術(shù)應(yīng)用中,對象的創(chuàng)建與對象的創(chuàng)建原則上是一樣的,這是因?yàn)長INQ技術(shù)將每個表轉(zhuǎn)換成了對象,例如:
CustomersdataAccess=new Customers O;
IEnumerable
我們這里生成的MyCustomers對象即數(shù)據(jù)表Customers的展現(xiàn),我們假如想將數(shù)據(jù)表中的字段進(jìn)行訪問,直接對MyCustomers對象的屬性驚醒訪問即可,應(yīng)用的方法河面性對象的方法是一樣的。
可以用循環(huán)的方式訪問到每一列數(shù)據(jù):
int count=MyCustomers.Count
for(int i=O;i<=count;i++)
Customersrow=MyCustomers.ElementAt
其中row對象就是代表了Customers表中的每一行,每個字段就可以通過這一樣的對象取出數(shù)據(jù)來,比如取第四行的City字段,就是:
Customers roW=MyCustomers.ElementAt
現(xiàn)在City屬性,就是我們需要的第四行的city字段的數(shù)據(jù)。
2.使用LINQ to SQL進(jìn)行插入操作
我們在插入新記錄時(shí),第一位的要使用InsertOnSubmit0方法將一個實(shí)體加入到一寸的數(shù)據(jù)庫表中,再對數(shù)據(jù)庫使用SUbmitChanges0方法進(jìn)行插入操作。下列代碼是先創(chuàng)建了—個C U stO mers實(shí)體eustomerTolnsert,然后把實(shí)體添加到數(shù)據(jù)庫表中,就是應(yīng)用的InsertOnSubmit0這一方法,最后再用這方法把數(shù)據(jù)添加到數(shù)據(jù)庫中。
Customers customerTolnsert--newCustomerso;
customerTolusert.ContactName=”George”:
eustomerTolnsert.Country=’’U KI;
Customers.1nsertOnSubmit(customerToluset0;
SubmitChanges0;
四、結(jié)論
總之,LINQ技術(shù)是visual Studio 2008中一項(xiàng)突破性的創(chuàng)新,它的應(yīng)用方便了網(wǎng)絡(luò)的開發(fā)程序,為我們以后的數(shù)據(jù)操作指明了方向,我們要切實(shí)把這一技術(shù)應(yīng)用到計(jì)算機(jī)網(wǎng)絡(luò)開發(fā)中,使其發(fā)揮最大效能。
【參考文獻(xiàn)】
[1]戰(zhàn)非.NET平臺下基于LINQ三層架構(gòu)的實(shí)現(xiàn)[J].電腦知識與技術(shù).2010.(11)
[2]魏一搏、徐夏.LINQ To SQL在ASP.NET數(shù)據(jù)訪問中的應(yīng)用[J].信息系統(tǒng)工程.2010.(03)
[3]田江.淺談LINQ訪問技術(shù)[J].科教文匯(下旬刊).2009.(07)
[4]徐海濤.LINQ to Object與傳統(tǒng)集合查詢的性能比較[J].計(jì)算機(jī)時(shí)代.2009.(08)
(作者單位:云南工程職業(yè)學(xué)院)