• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    LINQ to SQL技術(shù)在Web開發(fā)中的應(yīng)用

    2012-01-24 02:32:10舒國軍黃剛
    遵義師范學(xué)院學(xué)報 2012年1期
    關(guān)鍵詞:關(guān)系數(shù)據(jù)庫開發(fā)人員數(shù)據(jù)源

    舒國軍,黃剛

    (遵義師范學(xué)院計算機科學(xué)系,貴州遵義563002)

    1 LINQ查詢技術(shù)

    LINQ[1](Language Integrated Query——語言集成查詢)是微軟推出的新一代查詢技術(shù),使用.NET Framework3.5和Visual Studio 2008開發(fā)環(huán)境。LINQ技術(shù)有三大組件LINQ to Object、LINQ to ADO.NET和LINQ to XML分別用來訪問集合對象,關(guān)系數(shù)據(jù)庫和XML文檔,其中LINQ to ADO.NET有三種技術(shù),LINQ to DataSet、LINQ to SQL、LINQ to Entities,與.NET語言的關(guān)系和架構(gòu)如圖1所示。

    傳統(tǒng)的ADO.NET訪問數(shù)據(jù)庫的缺陷如下:算法復(fù)雜,需要定義查詢字符串,如果字符串錯誤則數(shù)據(jù)訪問失?。徊荒鼙WC綁定的參數(shù)與查詢語句中的一致導(dǎo)致運行錯誤;訪問不同的數(shù)據(jù)庫要編寫不同的SQL語句,代碼一致性和靈活性差;關(guān)系數(shù)據(jù)庫采用的數(shù)據(jù)模型與編寫代碼的對象模型有差異,開發(fā)人員需花時間寫代碼解決“阻抗不匹配”[1]的問題。

    LINQ的這幾個組件可訪問不同的數(shù)據(jù)源,且對不同數(shù)據(jù)源開發(fā)時可用統(tǒng)一的查詢語法,降低了數(shù)據(jù)庫開發(fā)的門檻,提高了開發(fā)效率,具有良好的可重用性和擴展性。LINQ實現(xiàn)了Web開發(fā)中的三層體系架構(gòu)的擴展應(yīng)用,還能實行異步查詢技術(shù)來提高應(yīng)用程序的吞吐量,縮短程序響應(yīng)時間,減少用戶等待時間。

    2 LINQ to SQL查詢

    在數(shù)據(jù)庫開發(fā)領(lǐng)域,面向?qū)ο蟮某绦虼a與關(guān)系數(shù)據(jù)庫有差異性,而LINQ to SQL[2]在這兩者間架起了一座橋梁。LINQ to SQL提供了輕量級的對象關(guān)系映射框架,將關(guān)系數(shù)據(jù)庫映射為.NET Framework3.5中的一些類,然后對數(shù)據(jù)進行CRUD操作。LINQ to SQL為數(shù)據(jù)庫創(chuàng)建對象模型,其中實體類的字段映射列,關(guān)系映射主外鍵關(guān)系,方法映射存儲過程或函數(shù)。LINQ to SQL把以往數(shù)據(jù)庫應(yīng)用程序中的操作細(xì)節(jié)封裝起來,使開發(fā)人員更關(guān)注核心代碼邏輯。LINQ to SQL層和表示界面層結(jié)合,開發(fā)效率高,采用三層體系結(jié)構(gòu)[3],如圖2所示。

    2.1 LINQ to SQL實體類的映射

    LINQ to SQL的實體類[4]用于表示對象-關(guān)系映射(ORM)。首先準(zhǔn)備好數(shù)據(jù)庫對象,然后建立實體類。建立方法有很多:手動編碼、用XML文件映射、命令行工具SqlMetal生產(chǎn)、LINQ to SQL設(shè)計器等。其中VS2008提供的O/R對象關(guān)系設(shè)計器比較方便使用,有可視化設(shè)計界面,用于創(chuàng)建映射到數(shù)據(jù)庫中表的對象模型,生成強類型DataContext在實體類和數(shù)據(jù)庫間發(fā)送接收數(shù)據(jù),對實體類間繼承關(guān)系的設(shè)計[5]。實體類TabAddress的代碼片段:

    (3)LINQ to SQL[7]中的Attach()和AttachAll()方法用來在多層結(jié)構(gòu)的程序中更新數(shù)據(jù),將實體附加到數(shù)據(jù)上下文的數(shù)據(jù)表,而表示界面層用SubmitChanges()方法來更新數(shù)據(jù)庫。從數(shù)據(jù)庫中檢索數(shù)據(jù),由于是采用基于表達(dá)式樹的查詢機制,要通過對Queryable類的擴展方法完成,如用where()方法來根據(jù)條件篩選并返回數(shù)據(jù),用Last()方法來返回滿足條件的最后一條記錄等。

    2.3 SQLMetal工具

    SQLMetal是一種VS2008提供的在生成數(shù)據(jù)模型對象中使用的命令行工具,可以從已經(jīng)存在的數(shù)據(jù)庫生成類在LINQ程序中使用,通過這個工具可以執(zhí)行以下操作:從數(shù)據(jù)庫生成包含源代碼和映射屬性的文件,生成自定義使用的中間數(shù)據(jù)庫標(biāo)記語言文件(*.dbml)等等。另外VS2008還有可視化LINQ代碼編輯器和調(diào)試器,為開發(fā)人員提供智能代碼提示,支持查詢表達(dá)式。

    2.4 LinqDataSource控件

    在ASP.NET 3.5的VS2008環(huán)境下,在Web應(yīng)用程序中檢索或修改數(shù)據(jù)時,通過使用LinqData-Source控件[8]來自動創(chuàng)建與數(shù)據(jù)進行交互的命令,簡化網(wǎng)頁代碼。LinqDataSource控件與數(shù)據(jù)庫的數(shù)據(jù)交互時,不是直接連接到數(shù)據(jù)庫,而是與表示數(shù)據(jù)庫和表的實體類交互,通過對象關(guān)系設(shè)計器或者SQLMetal工具生成實體類。LinqDataSource控件與Sql-DataSource控件相比有很大的優(yōu)勢,無需設(shè)置SQL查詢命令對數(shù)據(jù)的綁定和操作,LinqDataSource控件將使用LINQ to SQL自動創(chuàng)建,當(dāng)更新或插入數(shù)據(jù)時,將DataField屬性與實體類中的屬性名進行匹配即可。頁面通過數(shù)據(jù)源LinqDataSource控件和顯示數(shù)據(jù)的GridView控件就可以實現(xiàn)數(shù)據(jù)的操作[9],控件代碼如下:

    3 結(jié)束語

    本文介紹了LINQ查詢技術(shù)中LINQ to SQL架構(gòu)設(shè)計和數(shù)據(jù)庫操作,LINQ to SQL除了建立數(shù)據(jù)模型對數(shù)據(jù)進行CRUD操作(插入,刪除,更新)外,還支持存儲過程、事務(wù)、視圖的操作。在Visual Studio 2008中可以用LinqDataSource控件和GridView控件對關(guān)系數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)操作。作為新一代的數(shù)據(jù)訪問技術(shù),LINQ是在很多技術(shù)的基礎(chǔ)上發(fā)展起來的,如C-Omega語言、ObjectSpace以及XQuery等等,LINQ優(yōu)秀的語法查詢機制對開發(fā)人員提高項目效率有很大的現(xiàn)實意義。

    [1] 趙王兵.LINQ數(shù)據(jù)訪問技術(shù)的研究及其在電機設(shè)計系統(tǒng)中的應(yīng)用[D].廣東:中山大學(xué),2009.

    [2] Paolo Pialorsi,Marco Russo.Programming Microsoft LINQ[M].Redmond:Microsoft Press,2008.467-489.

    [3] 史紅軍.快速開發(fā)基于Linq to Sql的三層Web應(yīng)用[J].科技資訊,2009,(24):19-20.

    [4] Ken Getz.The LINQ Enumerable Class,Part2[EB/OL].http://msdn.microsoft.com/en-us/Magazine/cc793963.aspx,2011-06-09.

    [5] Scott Guthrie.Using LINQ-to-SQL(Part 1)[EB/OL].http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sqlpart-1.aspx,2011-05-07.

    [6] 趙志剛.ASP.NET中基于LINQ的數(shù)據(jù)訪問[J].沈陽師范大學(xué)學(xué)報(自然科學(xué)版),2009,27(2):198-201.

    [7] Anthony Sneed.Flexible Data Access With LINQ To SQL And The Entity Framework[EB/OL].http:/msdn.microsoft.com/enus/magazine/dd263098.aspx,2010-06-11.

    [8] Matthew MacDonald.Beginning ASP.NET 3.5 in C#2008 Fr om Novice to Professional second edtion[M].Redmond:Apress,2008.577-616.

    [9] 王的強.LINQ入門及應(yīng)用[M].北京:清華大學(xué)出版社,2009.209-225.

    猜你喜歡
    關(guān)系數(shù)據(jù)庫開發(fā)人員數(shù)據(jù)源
    關(guān)系數(shù)據(jù)庫在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
    山東冶金(2022年2期)2022-08-08 01:51:30
    Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
    Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
    基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
    基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
    讓W(xué)indows 10進入開發(fā)者模式
    電腦迷(2015年12期)2015-04-29 23:22:51
    后悔了?教你隱藏開發(fā)人員選項
    電腦愛好者(2015年6期)2015-04-03 01:20:56
    基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索
    分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢設(shè)計與實現(xiàn)
    一種基于數(shù)據(jù)圖劃分的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索方法
    大冶市| 治县。| 兴山县| 航空| 丰台区| 石城县| 高州市| 克拉玛依市| 克东县| 通许县| 雅安市| 南宁市| 丹棱县| 祁连县| 城市| 湾仔区| 曲松县| 宽甸| 玉树县| 特克斯县| 基隆市| 仁布县| 龙州县| 郴州市| 仙游县| 唐海县| 大洼县| 无极县| 玛曲县| 廉江市| 五大连池市| 乌兰浩特市| 七台河市| 藁城市| 昆明市| 惠安县| 吉木乃县| 沁水县| 紫金县| 磐石市| 钟山县|