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

    NET平臺(tái)下LINQ TO SQL關(guān)鍵技術(shù)的實(shí)踐研究

    2015-03-17 22:22:25徐照興
    關(guān)鍵詞:編程語(yǔ)言數(shù)據(jù)模型視圖

    徐照興

    (江西服裝學(xué)院 服裝商貿(mào)分院, 江西 南昌 330201)

    NET平臺(tái)下LINQ TO SQL關(guān)鍵技術(shù)的實(shí)踐研究

    徐照興

    (江西服裝學(xué)院 服裝商貿(mào)分院, 江西 南昌 330201)

    LINQ to SQL在對(duì)象領(lǐng)域和數(shù)據(jù)領(lǐng)域之間架起了一座橋梁,利用LINQ to SQL可以簡(jiǎn)化對(duì)SQL Server數(shù)據(jù)庫(kù)的操作。本文介紹了LINQ to SQL技術(shù)要點(diǎn),闡述了創(chuàng)建LINQ to SQL實(shí)體類的映射的步驟方法及注意事項(xiàng),給出了LINQ to SQL訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的查詢、刪除、修改、更新操作要點(diǎn)及實(shí)現(xiàn)的核心代碼。

    LINQ to SQL;.NET;SQL Server;數(shù)據(jù)訪問(wèn)

    LINQ(Language Integrated Query——語(yǔ)言集成查詢)是.NET Framework3.5中的創(chuàng)新性數(shù)據(jù)訪問(wèn)技術(shù),使程序員不必精通數(shù)據(jù)庫(kù)就能快速開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序。傳統(tǒng)的ADO.NET數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),需要針對(duì)不同的數(shù)據(jù)庫(kù)編寫不同的SQL語(yǔ)句,要求程序員要熟練各種數(shù)據(jù)庫(kù)及SQL語(yǔ)法等,如果SQL語(yǔ)句寫錯(cuò)了,只有到運(yùn)行時(shí)才能發(fā)現(xiàn)。LINQ是建立在ADO.NET技術(shù)基礎(chǔ)上的,它能夠把LINQ查詢自動(dòng)轉(zhuǎn)換成SQL語(yǔ)句。

    一、 LINQ to SQL技術(shù)概述

    LINQ是革命性的編程技術(shù),它改變了程序和數(shù)據(jù)之間的關(guān)系。LINQ to SQL是針對(duì)訪問(wèn)Microsoft SQL Server和Oracle數(shù)據(jù)庫(kù)的LINQ版本,它通過(guò)以對(duì)象形式來(lái)管理關(guān)系數(shù)據(jù)庫(kù)。傳統(tǒng)方法使用SQL數(shù)據(jù)庫(kù)需要掌握必要的SQL知識(shí),在編程語(yǔ)言中嵌套SQL語(yǔ)句,或者把包含SQL語(yǔ)句的字符串傳送給面向SQL的數(shù)據(jù)庫(kù)類庫(kù)中的API調(diào)用或方法。LINO to SOL可以處理與SOL數(shù)據(jù)庫(kù)通信的所有細(xì)節(jié)。當(dāng)應(yīng)用程序運(yùn)行時(shí),LINQ to SQL會(huì)將對(duì)象模型中的語(yǔ)言集成查詢轉(zhuǎn)換為SQL,然后將它們發(fā)送到數(shù)據(jù)庫(kù)進(jìn)行執(zhí)行。當(dāng)數(shù)據(jù)庫(kù)返回結(jié)果時(shí),LINQ to SQL會(huì)將它們轉(zhuǎn)換回編程語(yǔ)言處理的對(duì)象。

    使用LINQ to SQL時(shí),需要通過(guò)LINQ to SQL在關(guān)系數(shù)據(jù)庫(kù)和編程語(yǔ)言(可以使C#、VB.NET等,本文實(shí)例選用C#)之間創(chuàng)建對(duì)象相關(guān)映射(Object-Relational Mapping,ORM)。主要的對(duì)應(yīng)關(guān)系有:關(guān)系數(shù)據(jù)模型中的表對(duì)應(yīng)LINQ to SQL對(duì)象模型中的實(shí)體類,關(guān)系數(shù)據(jù)模型中的表的字段對(duì)應(yīng)LINQ to SQL對(duì)象模型中的類成員,關(guān)系數(shù)據(jù)模型中的外鍵關(guān)系對(duì)應(yīng)LINQ to SQL對(duì)象模型中的關(guān)聯(lián),關(guān)系數(shù)據(jù)模型中的存儲(chǔ)過(guò)程或函數(shù)對(duì)應(yīng)LINQ to SQL對(duì)象模型中的方法。

    二、創(chuàng)建LINQ to SQL實(shí)體類的映射

    使用LINQ to SQL訪問(wèn)數(shù)據(jù)庫(kù)的第一步是要?jiǎng)?chuàng)建映射到數(shù)據(jù)庫(kù)表和視圖的 LINQ to SQL實(shí)體類,該實(shí)體類的屬性映射到所選表或視圖中的列(字段)。創(chuàng)建的方法有多種,比如手動(dòng)編碼、用XML文件映射等,但是使用Visual Studio平臺(tái)提供的O/R對(duì)象關(guān)系設(shè)計(jì)器最為方便,步驟如下(在此以Visual Studio2012平臺(tái)、SQL Server2008創(chuàng)建DBTeacher數(shù)據(jù)庫(kù)為例):

    1.建立一個(gè)web網(wǎng)站,點(diǎn)擊“工具”菜單下的“選項(xiàng)”命令,彈出選項(xiàng)對(duì)話框,在該對(duì)話框左側(cè)點(diǎn)開“數(shù)據(jù)庫(kù)工具”,選擇下面的“O/R Designer”,在右側(cè)把“名稱的復(fù)數(shù)形式”啟用設(shè)置為“True”。

    2.創(chuàng)建數(shù)據(jù)庫(kù)(DBTeacher)并建立表(tbTeacherInfo)在Visual Studio2012平臺(tái)右側(cè)的解決方案。資源管理器的解決方案中添加App_Data文件夾,然后在該文件夾下添加SQL Serve數(shù)據(jù)庫(kù)文件DBTeacher。然后通過(guò)左側(cè)的服務(wù)器資源管理器為數(shù)據(jù)庫(kù)DBTeacher建立表tbTeacherInfo,在此只是為了說(shuō)明問(wèn)題,只創(chuàng)建三個(gè)字段,分別是TeacherID(主鍵)、TeacherName及Title,并向該表任意添加幾條記錄(作為測(cè)試用)。

    3.右擊站點(diǎn)根目錄,選擇“添加”/“添加新項(xiàng)”,在已安裝模板中再選擇“LINQ to SQL類”,并設(shè)置名稱為DBTeacher.dbml(注意,此處LINQ to SQL類名稱的主文件名最好與數(shù)據(jù)庫(kù)主文件名一致),單擊“確定”之后,提示把DBTeacher.dbml文件放在App_Code文件夾下,單擊“是”即可。

    4.在服務(wù)器資源管理器中,將tbTeacherInfo表拖動(dòng)到“對(duì)象關(guān)系設(shè)計(jì)器” DBTeacher.dbml的窗口中,tbTeacherInfo表及其列在設(shè)計(jì)器窗口中由名為tbTeacherInfo的實(shí)體表示。此過(guò)程在web.config文件中會(huì)自動(dòng)生成鏈接數(shù)據(jù)庫(kù)的字符串,名稱為“數(shù)據(jù)庫(kù)主文件名”+“ConnectionString”。更主要是在DBTeacher.designer.cs中會(huì)自動(dòng)生成必要的代碼。

    三、 LINQ to SQL訪問(wèn)數(shù)據(jù)庫(kù)的主要操作技術(shù)

    創(chuàng)建映射到數(shù)據(jù)庫(kù)表和視圖的 LINQ to SQL實(shí)體類之后,就可以直接通過(guò)LINQ to SQL技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)了,訪問(wèn)數(shù)據(jù)庫(kù)主要包括查詢、添加、刪除、修改等操作。它們實(shí)現(xiàn)的一般步驟如下:

    首先,根據(jù)LINQ to SQL實(shí)體類,創(chuàng)建一個(gè)數(shù)據(jù)上下文對(duì)象(如,TeacherDataContent)。

    其次,采用查詢語(yǔ)法,根據(jù)實(shí)際操作執(zhí)行相應(yīng)的LINQ查詢,并將結(jié)果賦予一個(gè)變量(如,Results)。如果知道了操作結(jié)果最多只有一條記錄,采用方法語(yǔ)法時(shí)使用SingleOrDefault ()方法實(shí)現(xiàn)往往更方便快捷。

    最后,根據(jù)查詢的結(jié)果,進(jìn)行相應(yīng)的數(shù)據(jù)綁定或給出相應(yīng)的提示。

    下面給出查詢、添加、刪除、修改四種操作的核心代碼。

    1.查詢操作(以按教師編號(hào)查詢?yōu)槔?

    DBTeacherDataContext teacherDC = new DBTeacherDataContext();

    String SelectID = TextBoxID.Text;

    var Results=from tbTecaherInfo in teacherDC. tbTecaherInfos where tbTecaherInfo.TeacherID==SelectID select tbTecaherInfo ;

    if (Results.Count() == 1)

    { GVshow.DataSource = Results;

    GVshow.DataBind();}

    2.刪除操作(以按姓名刪除為例)

    DBTeacherDataContext tdc = new DBTeacherDataContext();

    string delname = TextBoxName.Text;

    var Results = from tbTecaherInfo in tdc. tbTecaherInfos where tbTecaherInfo.TeacherName == delname select tbTecaherInfo;

    if (Results.Count() > 0)

    { int delNumers = Results.Count();

    foreach (var del in Results)

    { tdc.tbTecaherInfos.DeleteOnSubmit(del);

    tdc.SubmitChanges();}}

    3.添加操作

    DBTeacherDataContext tdc = new DBTeacherDataContext();

    string Stitle;

    tbTecaherInfo teacherinfo =tdc. tbTecaherInfos.SingleOrDefault(t=>t.TeacherID ==TextBoxID.Text);

    if (teacherinfo == null)

    { tbTecaherInfo s1 = new tbTecaherInfo { TeacherID = TextBoxID.Text , TeacherName = TextBoxName.Text , Title = Stitle };

    tdc. tbTecaherInfos.InsertOnSubmit(s1);

    tdc.SubmitChanges(); }

    4.修改操作(以根據(jù)教師編號(hào)進(jìn)行修改為例)

    string UpdateID = TextBoxID.Text;

    DBTeacherDataContext tdc = new DBTeacherDataContext();

    tbTecaherInfo teacherinfo =tdc. tbTecaherInfos.SingleOrDefault(t=>t.TeacherID ==TextBoxID.Text);

    tbTecaherInfo.TeacherName = TextBoxName.Text;

    tbTecaherInfo.Title = TextBoxTitle.Text;

    studentDC.SubmitChanges();

    四、結(jié)束語(yǔ)

    LINQ to SQL在對(duì)象領(lǐng)域和數(shù)據(jù)領(lǐng)域之間架起了一座橋梁,使程序員可以不必過(guò)多的關(guān)注SQL語(yǔ)句的編寫,而是把精力集中在業(yè)務(wù)邏輯的實(shí)現(xiàn)上。文章分析了LINQ to SQL的關(guān)鍵技術(shù),給出了訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的查詢、添加、刪除、修改操作的實(shí)現(xiàn)核心代碼,并進(jìn)行了詳盡的解釋,讀者可以從中快速掌握LINQ to SQL技術(shù)。

    2095-4654(2015)03-0006-02

    2014-11-12

    TP393 ;TP311

    A

    猜你喜歡
    編程語(yǔ)言數(shù)據(jù)模型視圖
    壓力-體積轉(zhuǎn)換在CFC編程語(yǔ)言中的實(shí)現(xiàn)解析
    Java編程語(yǔ)言的特點(diǎn)與應(yīng)用
    面板數(shù)據(jù)模型截面相關(guān)檢驗(yàn)方法綜述
    淺談不同編程語(yǔ)言對(duì)計(jì)算機(jī)軟件開發(fā)的影響
    電子制作(2018年1期)2018-04-04 01:48:36
    加熱爐爐內(nèi)跟蹤數(shù)據(jù)模型優(yōu)化
    5.3 視圖與投影
    視圖
    Y—20重型運(yùn)輸機(jī)多視圖
    SA2型76毫米車載高炮多視圖
    面向?qū)ο骔eb開發(fā)編程語(yǔ)言的的評(píng)估方法
    本溪市| 闽清县| 五河县| 无极县| 扎赉特旗| 安溪县| 天门市| 英德市| 苗栗县| 高安市| 荆州市| 隆昌县| 建始县| 汶川县| 罗甸县| 保山市| 子长县| 乐业县| 保康县| 霞浦县| 呈贡县| 肥西县| 云林县| 堆龙德庆县| 玉屏| 合作市| 武威市| 都江堰市| 江油市| 鲁山县| 昌图县| 收藏| 天全县| 峡江县| 石景山区| 井研县| 疏附县| 岑巩县| 拜泉县| 嘉鱼县| 许昌市|