Linq To Sql 练习
使用LINQ to SQL (第一部分)??
2009-05-12 14:33:21|??分類: 默認分類 |??標簽: |字號大中小?訂閱
什么是LINQ to SQL?
LINQ to SQL 是隨.NET Framework Orcas版一起發布的O/RM(對象關系映射)實現,它允許你用.NET 的類來對一個關系型數據庫建模。然后你可以用LINQ對數據庫進行查詢,以及進行更新/插入/刪除數據的操作。
LINQ to SQL完全支持事務,視圖和存儲過程。它還提供了一種把數據驗證和業務邏輯規則結合進你的數據模型的便利方式。
使用LINQ to SQL對數據庫建模:
Visual Studio Orcas版中提供了一個LINQ to SQL設計器,該設計器提供了一種簡易的方式,將數據庫可視化地轉換為LINQ to SQL對象模型。我下一篇博客將會更深入一些來介紹怎么使用該設計器(你可以觀看我一月份時錄制的這個關于如何從頭開始創建LINQ to SQL模型的錄像)。
通過LINQ to SQL設計器,我可以方便地設計出如下所示的Northwind數據庫的示例模型:
上圖定義了四個實體類:Product, Category, Order 和 OrderDetail。每個類的屬性都映射到數據庫中相應表的字段,類實體的每個實例代表了數據表中的一行記錄。
在上圖中,四個實體類間的箭頭代表了不同實體間的關聯/關系。它們主要是根據數據庫中的主鍵/外鍵關系生成的。設計器上的箭頭的指向表明了該關系是一對一還是一對多的關系。基于此,強類型的屬性將會被加入到實體類中。例如,上邊的Category類和Product類之間有一個“一對多”的關系。這意味著Category類將有一個"Products"屬性,該屬性代表了在該類中所有的產品對象的集合。而Product類將會有一個"Category"屬性來指向一個Category類的實例,該Category類的實例表明了了產品所屬的類別。
上圖中LINQ to SQL設計器的右側列出了與我們的數據庫模型交互的存儲過程。在上邊的例子中,我添加了一個“GetProductsByCategory”存儲過程。它有一個categoryID作為輸入參數,返回一個產品實體序列作為結果集。下面的代碼將展示如何調用該存儲過程。
理解DataContext類
當你點擊LINQ to SQL設計器上的“保存"按鈕時,Visual Studio將會保存我們建立的代表了實體和數據庫關系的各個類。針對加入到我們的解決方案的每一個LINQ to SQL設計器文件,同時也會生成一個自定義的DataContext類。這個DataContext類是我們從數據庫中查詢實體或者進行更改操作的主要渠道。生成的DataContext類將含有一些屬性,對應于我們在數據庫中建了模的每個數據表,以及一些方法,對應于我們添加的每個存儲過程。
例如,下圖就是基于我們上邊設計的模型而生成的的NorthwindDataContext類:
LINQ to SQL 代碼例子
用LINQ to SQL 設計器對我們的數據庫建模之后,我們就可以很方便地編寫代碼對數據庫進行操作了。下邊是一些展示了常見的數據庫操作的代碼例子:
1) 從數據庫中查詢Products
下面的代碼用LINQ to SQL 查詢語法來獲取Product對象的IEnumerable序列。注意代碼是如何通過Product/Category關系來僅查出那些類別是"Beverages"的產品的:
C#:
VB:
2) 更新數據庫中的一條產品記錄
下面的代碼示范了如何從數據庫中查詢出單一的一條產品記錄,更新它的價格,然后將改動保存至數據庫:
C#:
VB:
注意:VB在Orcas Beta1中尚不支持Lambda。但是在Beta2中,它就會支持了--那時代碼就會能寫得更為簡潔一些。
3) 向數據庫中插入一條新的Category和兩條新的Products
下面的代碼示范了如何生成一個新的分類,然后生成兩條和該分類相關聯的產品,然后將這三條記錄保存到數據庫中。
注意下邊,我不用手工去維護主/外鍵關系,取而代之的是,我只向分類對象的“Products”集合中添加了兩個Product記錄,然后把該Category對象添加到DataContext的“Categories”集合中,LINQ to SQL將知道自動為我持久適當的PK/FK的關系。
C#
VB:
4) 從數據庫中刪除Products
下面的代碼示范了如何從數據庫中刪除所有的玩具產品:
C#:
VB:
5) 調用存儲過程
下面的代碼示范了如何不使用LINQ查詢語法,而是通過調用我們在上面向數據模型中添加的“GetProductsByCategory”存儲過程來查詢Product實體。注意,一旦我查詢出了Product結果集,我可以更新/刪除它們,然后再調用 db.SubmitChanges()來將這些更新提交到數據庫。
C#:
VB:
6) 在服務器端分頁查詢Products
下面的代碼示范了如何通過LINQ查詢語法實現高效的服務器端數據庫分頁查詢。通過使用下面的Skip()和Take()操作符,我們從數據庫中只查詢出從200行開始的10條記錄:
C#:
VB:
總結
LINQ to SQL提供了一種很棒的、干凈利索的方法來為你的應用程序來建立數據層。一旦你定義了數據模型,你就可以方便而且有效地對它進行查詢,插入,更新和刪除。
轉載于:https://www.cnblogs.com/shixudong/archive/2013/01/22/2870910.html
總結
以上是生活随笔為你收集整理的Linq To Sql 练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详细讲解JAVA中的IO流
- 下一篇: php抓取页面400错误