欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何使用LINQ檢索和操作數(shù)據(jù)庫

這篇文章主要介紹“如何使用LINQ檢索和操作數(shù)據(jù)庫”,在日常操作中,相信很多人在如何使用LINQ檢索和操作數(shù)據(jù)庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用LINQ檢索和操作數(shù)據(jù)庫”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

為新區(qū)等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及新區(qū)網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站制作、新區(qū)網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

借助于LINQ提供的各種功能和獨有的語法結(jié)構(gòu),LINQ已經(jīng)被用來作為一種統(tǒng)一的數(shù)據(jù)庫訪問技術(shù)而被廣泛使用,用以消除從數(shù)據(jù)訪問層到數(shù)據(jù)源層出不窮的區(qū)別。通過LINQ檢索,我們已經(jīng)可以不用自己編寫一行代碼來從數(shù)據(jù)庫獲取到數(shù)據(jù),LINQ和SQL之間提供了一個直接映射關(guān)系,它可以通過我們事先指定的數(shù)據(jù)庫連接自動生成數(shù)據(jù)庫實體類,而我們只需要通過LINQ語句操作這些實體對象就可以非常輕松地從數(shù)據(jù)庫中獲取到數(shù)據(jù)。當(dāng)然,LINQ所生成的實體對象的功能遠(yuǎn)遠(yuǎn)不止這些,它甚至支持?jǐn)?shù)據(jù)的更新和存儲過程的調(diào)用,所有這些都可以通過簡單的幾行LINQ語句來完成,讓我們真正擺脫了編寫數(shù)據(jù)訪問層、數(shù)據(jù)庫實體類的工作。

下面就讓我們來看看LINQ的神奇功能吧!

使用LINQ生成數(shù)據(jù)庫實體類

Visual Studio 2008集成開發(fā)環(huán)境為我們提供了很多有用的功能來實現(xiàn)LINQ to SQL。為了讓讀者可以自行嘗試本文所舉的示例,讀者可能需要在本地安裝一個SQL Server數(shù)據(jù)庫實例,Northwind是微軟官方提供的一個不錯的例子,如果你本地沒有安裝這個實例,可以去下面這個地址下載:

http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en

我們在Visual Studio 2008中新建一個控制臺應(yīng)用程序,取名為LINQExample,然后打開Server Explorer窗口并連接到Northwind數(shù)據(jù)庫。如果找不到Server Explorer窗口,可以通過View-Server Explorer菜單打開。

在Server Explorer窗口中,右鍵單擊Data Connection節(jié)點,選擇Add Connection,在彈出的窗口中選擇Northwind數(shù)據(jù)庫。

如何使用LINQ檢索和操作數(shù)據(jù)庫

在工程中添加Northwind.dbml文件,該文件是LINQ to SQL Classes類型的文件。

如何使用LINQ檢索和操作數(shù)據(jù)庫

然后將Server Explorer窗口中Northwind數(shù)據(jù)庫中的所有Table和Stored Procedures拖放到Northwind.dbml視圖窗口中。此時,在Northwind.dbml文件中,Visual Sdutio已經(jīng)自動為我們創(chuàng)建了數(shù)據(jù)庫實體類和映射到數(shù)據(jù)庫存儲過程的靜態(tài)方法,在后面的示例中我們可以通過LINQ語句直接使用它們。

如何使用LINQ檢索和操作數(shù)據(jù)庫

打開Class View窗口,在其中也可以看到自動生成的實體類和靜態(tài)方法。

如何使用LINQ檢索和操作數(shù)據(jù)庫

是不是非常方便啊?那接下來就來看看如何通過LINQ檢索和修改數(shù)據(jù)。

使用LINQ檢索數(shù)據(jù)

LINQ檢索提供的語法結(jié)構(gòu)與SQL比較接近,這讓我們使用起來更加容易上手。Northwind.dbml自動包裝了一個上下文對象NorthwindDataContext類,其中包括了我們在Northwind數(shù)據(jù)庫中要使用的所有實體類和存儲過程映射方法,同時還提供了操作表數(shù)據(jù)的方法,使用時我們不需要去關(guān)心它是如何連接數(shù)據(jù)庫并進行底層數(shù)據(jù)操作的。事實上,Northwind.dbml文件中已經(jīng)包含了這些基礎(chǔ)設(shè)施!使用記事本打開Northwind.dbml,可以發(fā)現(xiàn)這是一個純粹的XML結(jié)構(gòu)化文件,里面包含了數(shù)據(jù)庫連接字符串和一些數(shù)據(jù)庫實體類的映射關(guān)系,同時,Northwind.designer.cs文件中也做了很多基礎(chǔ)性的工作,感興趣的讀者可以自行研究其中的代碼,或許對解決實際問題有所幫助。本文在這里不對這個文件的具體結(jié)構(gòu)作詳細(xì)的解釋。

下面的這個例子展示了通過LINQ檢索Northwind數(shù)據(jù)庫中Customers表City等于London的數(shù)據(jù),并在Command窗口中打印出來。

using (NorthwindDataContext context =new NorthwindDataContext())   {   var results = from curstomers in context.Customers
  • where curstomers.City =="London"   

  • orderby curstomers.CompanyName   

  • select curstomers;   

  •  

  • foreach (var curstomers in results)   

  • {   

  • Console.WriteLine("Company is {0} and Contact is {1}",   

  • curstomers.CompanyName, curstomers.ContactName);   

  • }   

  •  

  • // Pause to see the output   

  • Console.ReadLine();   

  • 這個是執(zhí)行結(jié)果:

    如何使用LINQ檢索和操作數(shù)據(jù)庫

    使用LINQ更新數(shù)據(jù)

    LINQ不僅可以從數(shù)據(jù)庫中檢索數(shù)據(jù),借助于NorthwindDataContext上下文對象提供的方法,我們也可以通過LINQ非常方便地將數(shù)據(jù)更新到數(shù)據(jù)庫中。下面的例子展示了將數(shù)據(jù)Insert和Update到數(shù)據(jù)庫并從數(shù)據(jù)庫中刪除數(shù)據(jù),其中使用了LINQ中的lambda表達(dá)式用于從數(shù)據(jù)源查詢數(shù)據(jù)(lambda表達(dá)式是LINQ查詢語句的一種簡寫形式)。

    using(NorthwindDataContextcontext=newNorthwindDataContext())  {  //AddanewrecordandverifyitexiststhroughCount  varcustomer=newCustomer()
  • {  

  • CompanyName="DramaCafe",  

  • CustomerID="DRACA",  

  • ContactName="TomSmith",  

  • City="BeverlyHills",  

  • Address="123MelrosePlace",  

  • PostalCode="90210" 

  • };  

  • context.Customers.InsertOnSubmit(customer);  

  • context.SubmitChanges();  

  • Console.WriteLine("NumberofDRACArecords:{0}",context.Customers.Where(c=>c.CustomerID=="DRACA").Count());  

  •  

  • //ModifytherecordandverifyitischangedthroughCount  

  • customer.ContactName="JoeSmith";  

  • context.SubmitChanges();  

  • Console.WriteLine("NumberofJoeSmithrecords:{0}",context.Customers.Where(c=>c.ContactName=="JoeSmith").Count());  

  •  

  • //DeletearecordandverifyitisremovedthroughCount  

  • context.Customers.DeleteOnSubmit(customer);  

  • context.SubmitChanges();  

  • Console.WriteLine("NumberofDRACArecords:{0}",context.Customers.Where(c=>c.CustomerID=="DRACA").Count());  

  •  

  • //Pausetoseetheoutput  

  • Console.ReadLine();  

  • 這個是執(zhí)行結(jié)果:

  • 如何使用LINQ檢索和操作數(shù)據(jù)庫

    使用LINQ執(zhí)行存儲過程

    在前面我們已經(jīng)看到,Northwind.dbml在生成數(shù)據(jù)庫實體類的同時,也生成了映射數(shù)據(jù)庫存儲過程的靜態(tài)方法,通過NorthwindDataContext上下文對象我們可以直接在LINQ中調(diào)用這些存儲過程。下面的例子展示了在LINQ中調(diào)用Ten_Expensive_Products存儲過程,用于檢索Products表中單價最貴的10中商品的名稱。

    using(NorthwindDataContextcontext=newNorthwindDataContext())  {  //Usethetenmostexpensiveproductsstoredprocedure  varresults=fromproductsincontext.Ten_Most_Expensive_Products()
  • selectproducts;  

  •  

  • foreach(varproductinresults)  

  • {  

  • Console.WriteLine("Productpriceis{0}",product.UnitPrice);  

  • }  

  •  

  • //Pausetoseetheoutput  

  • Console.ReadLine();  

  • 這個是執(zhí)行結(jié)果:

    如何使用LINQ檢索和操作數(shù)據(jù)庫

    LINQ檢索結(jié)語

    使用LINQ檢索數(shù)據(jù)庫確實可以為我們開發(fā)數(shù)據(jù)庫應(yīng)用程序帶來許多的便利性,例如省去編寫數(shù)據(jù)庫實體類和數(shù)據(jù)庫訪問層的代碼,但這同時也會帶來一些問題!例如在大型應(yīng)用項目中這將破壞整體項目的結(jié)構(gòu),而且難以做到應(yīng)用層與數(shù)據(jù)訪問層的松耦合結(jié)構(gòu),另外就是涉及到復(fù)雜數(shù)據(jù)庫事務(wù)時LINQ往往難以應(yīng)付,一個好的解決辦法就是將事務(wù)移至數(shù)據(jù)庫,在存儲過程中解決事務(wù)問題,然后在數(shù)據(jù)訪問層統(tǒng)一調(diào)用存儲過程,不過有些非常特殊的應(yīng)用層需求還是會存在問題。從這個意義上來看,LINQ仍然不可能全部替代傳統(tǒng)意義上的數(shù)據(jù)庫訪問層,不過在一些小型應(yīng)用或快速原型開發(fā)中,使用LINQ確實可以給我們省去很多麻煩。

    還有一點需要說明的是,鑒于Visual Studio可以允許我們在Server Explorer中連接除SQL之外的其它數(shù)據(jù)庫,這也就意味著我們可以通過LINQ訪問其它類型的數(shù)據(jù)庫。我們可以在工程中創(chuàng)建多個不同的dbml文件,用以連接不同類型的數(shù)據(jù)庫,然后在上層使用工廠進行調(diào)用切換,就可以達(dá)到支持多數(shù)據(jù)庫應(yīng)用的目的。有關(guān)這一點,讀者可以自己去嘗試。

到此,關(guān)于“如何使用LINQ檢索和操作數(shù)據(jù)庫”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

名稱欄目:如何使用LINQ檢索和操作數(shù)據(jù)庫
URL網(wǎng)址:http://aaarwkj.com/article28/jjhecp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、企業(yè)建站、商城網(wǎng)站、網(wǎng)站維護響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
91国产自拍在线视频| 内射极品美女在线观看| 日韩成人激情在线观看| 日韩国产精品一区二区| 久久se精品一区精品二区国产| 中文字幕日韩高清乱码| 天天操夜夜操狠狠操91| 国产成人性生交大片免费| 亚洲精品综合在线二区| 天堂av在线资源观看| 99久久精品国产熟女| 亚洲熟女av综合网五月| 最新国产av网址大全| 亚洲家庭伦理在线观看| 亚洲一区二区视频在线观看免费 | 亚洲欧美国产成人在线| 特黄日韩免费一区二区三区| 日本精彩视频一区二区| av中文字幕乱码在线看| 亚洲av日韩精品一区二区| 国产极品嫩模91精品| 亚洲av午夜福利麻豆av| 老司机看片午夜久久福利| 国产白丝免费在线观看| 日韩av在线播放亚洲天堂| 黄色av一本二本在线观看| 日本女优高清不卡一二三四区| 无遮挡动漫网站免费观看| 色偷偷91综合久久噜噜| 日本免费一区中文字幕| 99热精品成人免费观看 | 日韩欧美亚洲国产一区久久精品 | 日韩黄国产一区二区三| 久久99国产综合精品女同| 国产高跟丝袜av专区| 成人做爰片免费看视频| 人妻一区二区三区久久| 成人黄网站色大片免费| 日本一区二区欧美亚洲国产| 日韩高清在线不卡视频| 亚洲乱码一区二区av|