Linq To Sql學習經驗
本文向大家介紹Linq To Sql,可能好多人還不了解Linq To Sql,沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
Linq To Sql是Microsoft開發的針對解決data!=object問題的新技術。在筆者的一系列的文章中,對它已經做了大量的介紹。現在,筆者將從經驗的角度,談談它的優劣。
1、Linq To Sql的優點
在Linq To Sql推出之前,我們只是把sql語句形成一個string,然后,通過ado.net傳給sql server,返回結果集.這里的缺陷就是,如果你sql語句寫的有問題,只有到運行時才知道.而且并不所有的人都懂數據庫的。Linq To SQl 在一切圍繞數據的項目內都可以使用。特別是在項目中缺少sql server方面的專家時,Linq To SQl的強大的功能可以幫我們快速的完成項目。Linq To SQl的推出,是讓大家從煩瑣的技術細節中解脫出來,更加關注項目的邏輯。Linq To Sql的出現,大大降低了數據庫應用程序開發的門楷,它實質是事先為你構架了數據訪問層,勢必將加快數據庫應用程序的開發進度。Linq To Sql解放了眾多程序員,讓他們的把更多的精力放到業務邏輯以及code上,而不是數據庫。對于初學者來講,Linq To Sql可以讓他們迅速進入數據庫應用程序開發領域,節約了培訓成本。
Linq To SQl 的實現,是在ado.net和c#2.0的基礎上的。它通過自動翻譯sql語句,并把結果集創建成對象并返回。這里我們可以看出,發送到Sql Server端的sql語句是Linq To Sql自動生成的。這對不懂sql的人來說,無疑是個福音。第二,Linq To Sql語句是在編譯期間就做檢查的。而不是運行時檢查。這樣,那里出了問題,可以及時更改,而不是到了運行時才發現問題。第三,Linq To Sql是針對對象操作的,更符合今天的oo呼聲。
在Linq To SQl 之前,在java領域有Hibernate,在net領域有NHibernate技術,來實現object/relational 持久和查詢服務。那和NHibernate比起來,它又有那些優勢呢.第一,影射代碼自動生成。VS2008提供了SqlMetal和OR Designer兩個工具來完成此步驟。而在NHibernate中,你不得不自己手工寫。第二,影射代碼有更多的選擇.NHibernate只能把數據庫的信息配置在一個xml中,而Linq To Sql有兩種方式,一個是放到xml中,我們稱為Externl Mapping, 再一種就是以Attribute的形式,存在于各個property中。當然,筆者本人并沒有使用過NHibernate,只是從資料上得到這些消息,所以無法給出更多的比較。
2、Linq To Sql的缺點
很久前,有個網友問到這么一個問題。他在界面上有個DataView,里面綁定了一些Column,然后他勾選那一列就按某列排序。其傳回的參數是列的名字。然后問我該怎么用Dlinq 來實現。
在以前拼接Sql語句的年代,這個很簡單,一個" order by " + string,想按什么排就按什么來排。而現在dlinq是用是一個對象的屬性,已經不可能拼接了。我當時給他的答案是這樣的。
【編輯推薦】