張紅實 蔣鄭
摘 要:本文就數據庫查詢問題介紹了LINQ技術,剖析了LINQ技術的特點和組成部分,對其中的LINQ to SQL技術應用做了重點闡述。此技術使用類似SQL的語法將查詢操作直接引入到NET框架所支持的編程語言中,可查詢外部數據源及內存等任何形式數據,操作簡單實用,為降低數據庫開發門檻,提升開發效率有著積極的意義。
關鍵詞:LINQ;數據庫查詢;LINQ to SQL
1 引言
傳統的數據查詢技術繁多且使用復雜,使得開發的難度較高。在這里,筆者發現LINQ技術在進行數據查詢時具備很好的語法檢查、豐富的元數據、智能感知和靜態類型等強類型語言之類的優點,并且能查詢內存中的數據而不只是外部數據源。這使我們可以用一種類似SQL語法的代碼來查詢任何形式的數據,讓開發變得簡單起來。
2 LINQ技術的特點及組成
LINQ(Language-Integrated Query)是微軟于C#3.0推出的.Net平臺下的框架產品,提供了固定的編程模型,采用面向對象思維方式使用相同的代碼模式來對任何能兼容LINQ的數據進行操作。
LINQ的查詢處理包含三個操作:①獲取數據源;②創建查詢;③執行查詢。在LINQ里,查詢的執行和查詢的構造本身是截然不同的。如果只是創建查詢變量,則不會查詢數據,只有訪問查詢變量時才執行查詢。這就是LINQ的延遲查詢。
LINQ由三部分組成:LINQ to Objects,LINQ to ADO.NET,LINQ to XML.其中LINQ to ADO.NET又細分為三部分:LINQ to SQL,LINQ to Data Sets,LINQ to Entities。
LINQ to Objects用來查詢內存中的數據對象集合;LINQ to SQL用來查詢SQL Server 200x數據庫的表;LINQ to Data Sets用來查詢ADO.NET Data Sets,LINQ to XML用來查詢XML數據,LINQ to Entities用來查詢ADO.NET框架中的業務實體。
3 LINQ to SQL查詢
通過使用LINQ to SQL,生成表示數據的.NET Frame work類。這些生成的類直接映射到數據庫表、視圖、存儲過程和用戶定義的函數,而不映射到概念數據模型。當應用程序運行時,LINQ to SQL會將對象模型中的語言集成查詢轉換為SQL后發送到數據庫中執行。當數據庫返回結果時,LINQ to SQL會將它們轉換回編程語言處理的對象。
3.1 LINQ to SQL實體類的映射
該實體類用于對象——關系映射(ORM):①首先準備好數據庫對象,然后建立實體類;②使用LINQ to SQL執行Delete操作,用Delete On Submit和Delete All On Submit方法來刪除數據;③LINQ to SQL中的Attach和Attach All方法用來在多層結構的程序中更新數據,將實體附加到數據上下文的數據表,而表示界面層用Sub-mit Changes方法來更新數據庫。從數據庫中檢索數據,由于是采用基于表達式樹的查詢機制,要通過對Queryable類的擴展方法完成,如用where方法來根據條件篩選并返回數據,用Last方法來返回滿足條件的最后一條記錄等。
3.2 Linq Data Source控件
在Web應用程序中操作數據時,通過使用Linq Data Source控件來自動創建與數據進行交互的命令,簡化網頁代碼。Linq Data Source控件與數據庫的數據交互時,不直接連接數據庫,而是與數據庫和表相關聯的實體類交互。Linq Data Source控件與Sql Data Source控件相比有很大的優勢,無需設置SQL查詢命令對數據的綁定和操作,Linq Data Source控件將使用LINQ to SQL自動創建,當更新或插入數據時,將Data Field屬性與實體類中的屬性名進行匹配即可。頁面通過數據源Linq Data Source控件和顯示數據的Grid View控件就可以實現數據的操作。
4 結束語
數據查詢是從一個特定結構的數據源中取出數據。不同結構的數據源很可能會形成不同查詢語言,從而導致開發者進行跨數據源的數據操作難度急劇增加。而LINQ則提供固定的編程模型,兼容各種數據格式,使得數據查詢難度大大降低。與傳統的查詢方式相比,LINQ解決了不同數據源之間難以共同引用的問題,無需學習各類查詢語言,讓程序的可讀性、靈活性迅速提高。同時因為查詢語句的統一,這就使得程序開發的門檻變低,提高了開發效率,還具有了良好的可重用性和擴展性。
參考文獻
[1]胡玉貴.C#下的Linq簡介[J].電腦知識與技術(學術交流),2007.
[2]陳娟.基于Frame work3.5的LINQ技術探究[J].微計算機信息,2010.
[3]韓雙旺.LINQ數據庫訪問技術研究[J].自動化與儀器儀表,2011.
[4]舒國軍,黃剛.LINQ to SQL技術在Web開發中的應用[J].遵義師范學院學報,2012.
[5]趙志剛.ASP.NET中基于LINQ的數據訪問[J].沈陽師范大學學報(自然科學版),2009.
作者簡介
張紅實(1977—),男,重慶人,重慶工程學院軟件開發專業教師,副教授,計算機軟件與理論碩士,研究方向:ERP軟件開發及相關教學實施與研究。