文章出處

原文:http://www.mini188.com/showtopic-1286.aspx

一、Linq是什么


Linq何許神也?MSDN中有這么一段話:語言集成查詢 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中一項突破性的創新,它在對象領域和數據領域之間架起了一座橋梁。
突破性的創新,這個稱號確實讓人一驚,呵呵。LINQ是Language Integrated Query的英文縮寫,從這串英文可以看出LINQ是語言,是一種集成的查詢語言。目前微軟提供的庫中已經支持了:Linq To Objects、Linq To Xml、 Linq To DataSets、Linq To Sql以及新近推出的Linq To Entites。
Linq通過定義一套查詢操作符結合.NET Freamwork實現了強大的查詢功能,為此微軟也為Linq新增了相應的命名空間以使開發者能夠非常簡單的應用LINQ的強大功能。

二、LinqToSql是什么

本文討論的是LinqToSql,主要是因為在項目中用到了LinqToSql,也體會到了其強大的功能同時也感到了它許多的不足。而LinqToSql又是最貼近于現有的一些關系型數據庫軟件系統的應用。所以以LinqToSql來學習和掌握LINQ是個不錯的選擇。
LinqToSQL就是基于關系型數據庫的集成查詢,用于以對象的形式管理及查詢關系型數據庫。換言之,可以不寫SQL就能實現對數據庫的管理及查詢,說的有些懸!~~
目前LinqToSql僅支持了微軟的SQLServer數據庫,也可以說是個半成品,也正是如此在實際開發中會有一些擴展要求,當然,對于一些簡單的數據庫軟件系統LinqToSql還是基本滿足要求的。
在LinqToSql中有一個非常重要的成員:DataContext(數據上下文)。這個東東是LinqToSql用于處理數據來來去去的核心,其負責了從Linq查詢翻譯成SQL語句的過程,并且負責了數據的加載填充。
另一個重要的成員:實體類。在數據庫中會存在著數據表、視圖、存儲過程、函數等等等等,Linq是基于對象查詢的,也就是必須是強類型的數據操作。所以LinqToSql必須將這些數據庫中的壇壇罐罐都類型化,微軟定義了一個dbml文件,用于實現對象與數據庫對象的映射,這個映射就是實體類,LinqToSql通過這個映射達到了與數據庫之間的交互。當然微軟也開發了可視工具,生成實體的時候非常的簡單。

三、使用LinqToSql需要什么

想要用LinqToSql開發程序,必備的東西還是要有的:
1、Vs2008(最好是打上Sp1吧)
2、.Net Freamwork3.5(最好是打上Sp1)
3、MSSqlServer(2000/2005/2008)
4、會C#、VB.NET
5、還有看書和實踐的能力
要求不高吧,微軟的東西相對來說做的還是非常易用,接下舉個例子你就寫出一個LinqToSql的第一個程序了,讓我們開始吧。

四、試試吧

請把各種裝備都搞定,再繼續下面的步驟,我是用C#寫的:
1、建立一個C#Console工程,取名為:OhTestLinq
2、然后向工程中添加新建項,在列表中選擇“Linq To Sql 類”,如下圖:


至于名稱嘛,不改好了,就按默認的來。(平時寫程序可不要這習慣。呵呵)
3、在工程中會生成幾個新成員,如圖:


同時對擊這個DataClasses1.dbml,打開后會顯示一個頁面,在中間會有如下提示:


點擊“服務器資源管理器”,建立一個數據庫連接,就直接連接到SqlServer的自帶數據庫“Northwind”。展開連接中的表,然后選中全部的表:


用鼠標拖到dbml中去,數據表就會生成在dbml中了。
4、好了,這樣數據庫與LinqToSql的映射工作就做好了,數據庫鏈接和上下文類以及實體類的代碼都已經自動生成,接下來就可以使用LinqToSql的強大功能來做數據操作了:
打開Program.cs文件,寫下面的代碼:


class Program
{
        static void Main(string[] args)
        {
                    DataClasses1DataContext db = new DataClasses1DataContext();

                    var customs = from cust in db.Customers
                                            where cust.City == "London"
                                            select cust;

                    foreach (var u in customs)
                  {
                          Console.WriteLine(u.CompanyName);
                  }

                  Console.Read();
        }
}


這段代碼是查詢了來自London這個城市的客戶,并顯示了這些客戶的公司名稱,按下F5,輸入出結果如下:


是不是很簡單?這過程中沒有寫一行SQL語句就實現了數據的查詢,但是你會發現有一句代碼很像SQL:

var customs = from cust in db.Customers
                      where cust.City == "London"
                      select cust;

這就是Linq的查詢語法,和SQL很相近,但是又有區別,最特別的是select出現在了最后面。事實上這個寫法更貼近于真實的SQL執行過程,這個以后我找機會寫文章介紹。
五、結束語
Linq理解后會發現是比較簡單易學的,而且其強大的查詢能力也會在編寫代碼過程中大大的提高開發效率,而且從目前一些主流的開發框架中都盡量的減少對SQL的應用,特別是在多層分式系統中,通過Linq的應用可以減少甚至不使用SQL查詢語言就可以實現數據庫的操作,但是,Linq本身帶來的性能及局限性也會制約他的作用,所以如何合理設計并運用Linq才是最最重要的。做為新技術,大部分廠商都在觀望,也都期待著這個讓程序員眼前一亮的東西有更加成熟的表現,那就讓我們除期待以后,也嘗試一把吧。



作者:5207
出處:http://www.mini188.com
本文版權歸作者所有,歡迎轉載請注明出處,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

    AutoPoster 發表在 痞客邦 留言(0) 人氣()