日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
LinqToSql練習(xí)-創(chuàng)新互聯(lián)

使用LINQ to SQL (第一部分)

2009-05-12 14:33:21|  分類: 默認分類 |  標簽:|字號大中小 訂閱

成都創(chuàng)新互聯(lián)是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),友情鏈接,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。    

什么是LINQ to SQL?

LINQ to SQL 是隨.NET Framework Orcas版一起發(fā)布的O/RM(對象關(guān)系映射)實現(xiàn),它允許你用.NET 的類來對一個關(guān)系型數(shù)據(jù)庫建模。然后你可以用LINQ對數(shù)據(jù)庫進行查詢,以及進行更新/插入/刪除數(shù)據(jù)的操作。

LINQ to SQL完全支持事務(wù),視圖和存儲過程。它還提供了一種把數(shù)據(jù)驗證和業(yè)務(wù)邏輯規(guī)則結(jié)合進你的數(shù)據(jù)模型的便利方式。

使用LINQ to SQL對數(shù)據(jù)庫建模:

Visual Studio Orcas版中提供了一個LINQ to SQL設(shè)計器,該設(shè)計器提供了一種簡易的方式,將數(shù)據(jù)庫可視化地轉(zhuǎn)換為LINQ to SQL對象模型。我下一篇博客將會更深入一些來介紹怎么使用該設(shè)計器(你可以觀看我一月份時錄制的這個關(guān)于如何從頭開始創(chuàng)建LINQ to SQL模型的錄像)。

通過LINQ to SQL設(shè)計器,我可以方便地設(shè)計出如下所示的Northwind數(shù)據(jù)庫的示例模型:

上圖定義了四個實體類:Product, Category, Order 和 OrderDetail。每個類的屬性都映射到數(shù)據(jù)庫中相應(yīng)表的字段,類實體的每個實例代表了數(shù)據(jù)表中的一行記錄。

在上圖中,四個實體類間的箭頭代表了不同實體間的關(guān)聯(lián)/關(guān)系。它們主要是根據(jù)數(shù)據(jù)庫中的主鍵/外鍵關(guān)系生成的。設(shè)計器上的箭頭的指向表明了該關(guān)系是一對一還是一對多的關(guān)系?;诖?,強類型的屬性將會被加入到實體類中。例如,上邊的Category類和Product類之間有一個“一對多”的關(guān)系。這意味著Category類將有一個"Products"屬性,該屬性代表了在該類中所有的產(chǎn)品對象的集合。而Product類將會有一個"Category"屬性來指向一個Category類的實例,該Category類的實例表明了了產(chǎn)品所屬的類別。

上圖中LINQ to SQL設(shè)計器的右側(cè)列出了與我們的數(shù)據(jù)庫模型交互的存儲過程。在上邊的例子中,我添加了一個“GetProductsByCategory”存儲過程。它有一個categoryID作為輸入?yún)?shù),返回一個產(chǎn)品實體序列作為結(jié)果集。下面的代碼將展示如何調(diào)用該存儲過程。

理解DataContext類

當你點擊LINQ to SQL設(shè)計器上的“保存"按鈕時,Visual Studio將會保存我們建立的代表了實體和數(shù)據(jù)庫關(guān)系的各個類。針對加入到我們的解決方案的每一個LINQ to SQL設(shè)計器文件,同時也會生成一個自定義的DataContext類。這個DataContext類是我們從數(shù)據(jù)庫中查詢實體或者進行更改操作的主要渠道。生成的DataContext類將含有一些屬性,對應(yīng)于我們在數(shù)據(jù)庫中建了模的每個數(shù)據(jù)表,以及一些方法,對應(yīng)于我們添加的每個存儲過程。

例如,下圖就是基于我們上邊設(shè)計的模型而生成的的NorthwindDataContext類:

LINQ to SQL 代碼例子

用LINQ to SQL 設(shè)計器對我們的數(shù)據(jù)庫建模之后,我們就可以很方便地編寫代碼對數(shù)據(jù)庫進行操作了。下邊是一些展示了常見的數(shù)據(jù)庫操作的代碼例子:

1) 從數(shù)據(jù)庫中查詢Products

下面的代碼用LINQ to SQL 查詢語法來獲取Product對象的IEnumerable序列。注意代碼是如何通過Product/Category關(guān)系來僅查出那些類別是"Beverages"的產(chǎn)品的:

C#:

VB:

2) 更新數(shù)據(jù)庫中的一條產(chǎn)品記錄

下面的代碼示范了如何從數(shù)據(jù)庫中查詢出單一的一條產(chǎn)品記錄,更新它的價格,然后將改動保存至數(shù)據(jù)庫:

C#:

VB:

注意:VB在Orcas Beta1中尚不支持Lambda。但是在Beta2中,它就會支持了--那時代碼就會能寫得更為簡潔一些。

3) 向數(shù)據(jù)庫中插入一條新的Category和兩條新的Products

下面的代碼示范了如何生成一個新的分類,然后生成兩條和該分類相關(guān)聯(lián)的產(chǎn)品,然后將這三條記錄保存到數(shù)據(jù)庫中。

注意下邊,我不用手工去維護主/外鍵關(guān)系,取而代之的是,我只向分類對象的“Products”集合中添加了兩個Product記錄,然后把該Category對象添加到DataContext的“Categories”集合中,LINQ to SQL將知道自動為我持久適當?shù)腜K/FK的關(guān)系。

C#

VB:

4) 從數(shù)據(jù)庫中刪除Products

下面的代碼示范了如何從數(shù)據(jù)庫中刪除所有的玩具產(chǎn)品:

C#:

VB:

5) 調(diào)用存儲過程

下面的代碼示范了如何不使用LINQ查詢語法,而是通過調(diào)用我們在上面向數(shù)據(jù)模型中添加的“GetProductsByCategory”存儲過程來查詢Product實體。注意,一旦我查詢出了Product結(jié)果集,我可以更新/刪除它們,然后再調(diào)用 db.SubmitChanges()來將這些更新提交到數(shù)據(jù)庫。

C#:

VB:

6) 在服務(wù)器端分頁查詢Products

下面的代碼示范了如何通過LINQ查詢語法實現(xiàn)高效的服務(wù)器端數(shù)據(jù)庫分頁查詢。通過使用下面的Skip()和Take()操作符,我們從數(shù)據(jù)庫中只查詢出從200行開始的10條記錄:

C#:

VB:

總結(jié)

LINQ to SQL提供了一種很棒的、干凈利索的方法來為你的應(yīng)用程序來建立數(shù)據(jù)層。一旦你定義了數(shù)據(jù)模型,你就可以方便而且有效地對它進行查詢,插入,更新和刪除。


文章標題:LinqToSql練習(xí)-創(chuàng)新互聯(lián)
文章出自:http://www.dlmjj.cn/article/djopdh.html