LinQ to SQL四大護法剖析
在向大家詳細介紹LinQ to SQL之前,首先讓大家了解下LinQ to SQL四大護法,以后全面介紹LinQ to SQL。
我們來看看LinQ to SQL,就是對數據庫的查詢,以前叫做DLinQ。經??吹絃inQ那到底是什么呢?他是Language Integrated Query的縮寫,以一種類似SQL語句的形式來對對象進行操作的編程方法。
在使用到LinQ時也會用到以前提到過的一些特性,如:匿名類型,自動化屬性等等。
LinQ to SQL是一種ORM,它允許你通過編寫.NET程序來控制或操作關系型數據庫以達到查詢的效果。你可以使用LinQ來檢索數據庫中的數據,也可以通過其進行數據的更新和添加。同時LinQ to SQL也支持事務,試圖以及存儲過程等等,通過VS2008(現在使用的是beta版本,下同)的LinQ to SQL設計器我們可以很容易定義一些實體類,我們可以通過添加一個新項來加入.dbml文件,并從數據庫服務器窗口拖出數據表。
我們定義兩個實體類,Artile和Category,我們也可以把存儲過程拖到方法的窗口中,由于我們的存儲過程和數據表的命名可能帶有前綴或其他標識,我們可以查看屬性窗口將他們的name屬性改掉我們容易識別的名稱。我們打開Designer.cs那個文件看一下,是不是生成了幾個類,其中一個最重要的是以DataContext為后綴那個類(他以當前dbml文件名加DataContext為名稱的類),他是這個LinQ的上下文,我們可以通過他來執行我們的操作。而上面兩個是外鍵關系,他還生成了一個關系類,而且在Category類中好有一個Article的集合,在Article中也有一個關聯屬性,在賦值時還會對鍵值類型進行判斷。
下面我們來看看實際應用的一些例子(LinQ to SQL四大護法<SELECT/INSERT/UPDATE/DELETE>):
1.從數據庫中檢索數據<SELECT>
- //三個重載(),(string connectionString),(IDbConnection connection)
- ItLivesNetDataContext cntx = new ItLivesNetDataContext();
- //這個也可以在初始化ItLivesNetDataContext實例時直接進行初始化。
- cntx.Connection = new SqlConnection
(ConfigurationManager.ConnectionStrings[0].ConnectionString);- var articles = from a in cntx.Articles
- where a.CategoryID == 1
- orderby a.PostDate descending
- select a;
上面的代碼將返回數據庫Articles表中類型ID為1的所有數據,并將其按發布時間進行降序排列。其中articles其實是IEnumerable<T>的實例,這個例子的T就是Article實體類。
2.將新數據插入到數據庫中<INSERT>
- //插入新類型C++
- Category category = new Category
- { CategoryName="CPLUSPLUS",IsActived=true, ParentID = 1 };
- //插入新文章,類型為C++
- var article = new Article { Subject = "C++入門", Author="網魂小兵" };
- category.Articles.Add(article);
- cntx.Categories.Add(category);
- cntx.SubmitChanges();
3.更新新數據<UPDATE>
- Category category = cntx.Categories.Single(p =>
p.CategoryName.ToUpper() == "CSHARP");- category.IsActived = true;
- category.Description = "UPDATE CSHARP!";
- cntx.SubmitChanges();
4.刪除數據庫中的數據<DELETE>
- var delArtiles = from s in cntx.Articles
- where s.CategoryName == "CPLUSPLUS"
- select s;
- cntx.Articles.RemoveAll(delArtiles);
- cntx.SubmitChanges();
以上是LinQ to SQL四大護法的例子,例子很簡單一看就能夠懂就不多解釋了。在數據庫中我們還經常要用到檢索數據庫的方法那就是分頁檢索數據庫,然而在比較大的數據時我們往往會用到存儲過程來完成這一職業。
【編輯推薦】