一直以爲LINQ只應用於查詢內存的數據結構,今天看了ScottGu的BlogUsing LINQ to SQL (Part 1) ,原來LINQ如此的酷,要加強學習了。簡單翻譯描述一下,與大家分享。
用於SQL的LINQ是內置於.NET Framework“Orcas”版本中的一種O/RM(對象關係映射)實現,允許使用.NET類對一個關係型數據庫進行建模。然後就可以使用LINQ對數據庫進行查詢了,而且還支持update/insert/delete操作!
用於SQL的LINQ完全支持數據庫中的事務,視圖和存儲過程。還提供了一種簡單的方式來整合數據驗證和業務邏輯規則到你的數據模型中去。
第一步,使用LINQ對數據庫建模
Visual Studio“Orcas”內置了用於SQL的LINQ設計器,提供了快速建模功能和LINQ對象模型的可視化操作(作者將在下篇文章中詳細講解)。以SQL Server裏著名的“北風”數據庫爲例:
其中定義了四個類:Product,Category,Order和OrderDetail。類中的每個屬性映射了數據庫表中的相應的字段。每個類的實例則代表了數據庫表中的一條記錄。箭頭代表了不同實體間的關係,映射了數據庫中的主鍵/外鍵。箭頭方向則代表了關係是一對一還是一對多,基於這個,強類型屬性就會添加到實體類中。例如,Category類與Product類就是一個一對多關係,這就意味着Product中有一個“Category”屬性指向一個代表了Product所屬類型的Category實例。
設計器右側窗口中則包含了與現在的數據庫模型互動的相關存儲過程的列表,可以手動添加。
當在設計器點擊“保存”時,Visual Studio會生成代表建模中的實體和關係的.NET類,自動生成文件添加到解決方案中。同時還會生成一個定製的DataContext類,主要用來數據庫中查詢實體以及更新數據庫。DataContext類中會創建代表建模中每個表的屬性,和添加的每個存儲過程的相應方法。
第二步,LINQ應用
1. 查詢
通過Product/Category關係來查詢指定Category的Product,var關鍵字表示聲明的是匿名類型
2. 更新
先從數據庫中取出單個Product,更新價格,保存變化回數據庫
3. 插入
先新建一個Category,在新建兩個屬於該Category的Product,然後保存回數據庫。注意,在這裏不需要管手動理主鍵/外鍵關係,僅需要添加Proudct到Category中Products集合,再把Catgory添加到DataContext中的Categories集合即可,DataContext會自動維護主鍵/外鍵關係。
4. 刪除
從數據庫中刪除指定Product
5. 調用存儲過程
注意,一旦得到Product的集合結果,同樣可以執行update/delete操作,並保存回數據庫。
6. 分頁讀取
使用Skip()和Take()方法,從數據庫中得到指定行的開始的指定行數的Product集合。有些類似於ObjectDataSource中的分頁方法(startRowIndex,maximumRows兩個參數),還想到了SQL Server 2005中的ROW_Number()函數:)
總結:
還需要自己寫數據訪問層嗎~~~~
翻譯不當之處希望大家不吝指正,另外網上有哪些好的.NET 3.x學習資料請大家分享一下,謝謝。