av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

淺談LINQ如何插入刪除和更新數(shù)據(jù)庫記錄備注

一、引言

創(chuàng)新互聯(lián)長(zhǎng)期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為渝水企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站設(shè)計(jì),渝水網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

使用LINQ TO SQL生成數(shù)據(jù)庫訪問層極大地簡(jiǎn)化了此前數(shù)據(jù)庫訪問層的設(shè)計(jì)(以前基于SQL SERVER的開發(fā)大多是基于SQLHELPER或微軟企業(yè)級(jí)的DAAB吧?)。

但是,LINQ TO SQL不是***的。例如,你在重新修改或設(shè)計(jì)數(shù)據(jù)庫表格后,原先使用LINQ TO SQL生成的DATACONTEXT類并不會(huì)自動(dòng)更新。因此,針對(duì)這些更改之后的操作,需要特別注意。

二、問題描述

[一]

本文中首先記錄的是使用LINQ插入數(shù)據(jù)庫記錄時(shí)涉及的一個(gè)基本概念級(jí)問題。

請(qǐng)看下面的代碼片斷:

public  bool InsertUserStatus(string UserName)
    {
        eMailDataContext dt = new eMailDataContext();
        try
        {
            //刪除可能存在的原有用戶狀態(tài)信息
           Table3 u = dt.Table3.First(m => m.abc == UserName);
            //if (dt.Table3.Count() != 0)
            //{
            //    Table3 u = dt.Table3.First(m => m.abc  == UserName);
                //if (u != null)
                //{
                    dt.Table3.DeleteOnSubmit(u);
                    dt.SubmitChanges();
                //}
            //}
            //創(chuàng)建新的用戶狀態(tài)信息
            Table3 userstatus = new Table3
            {
                abc = UserName
            };
            //插入到數(shù)據(jù)庫表格UserStatus中
            dt.Table3.InsertOnSubmit(userstatus);

            dt.SubmitChanges();

            return true;
        }
        catch (System.InvalidOperationException)
        {
           return false;//(2)
        }
    }

上述代碼的意思是,在表格Table3 中先刪除可能存在的符合條件的記錄,然后在此表格中再插入一條記錄數(shù)據(jù)。上面的代碼將“可能”引發(fā)異常,將流程控制轉(zhuǎn)向(2)處。

這些“可能”在于,數(shù)據(jù)表格Table3 中最初無記錄,則必引發(fā)異常;如果有記錄,則一切符合既定操作要求。

于是,修改上面的代碼為如下:

public  bool InsertUserStatus(string UserName)
    {
        eMailDataContext dt = new eMailDataContext();
        try
        {
            //刪除可能存在的原有用戶狀態(tài)信息
           if (dt.Table3.Count() != 0)// (1)
            {
                Table3 u = dt.Table3.First(m => m.abc  == UserName);
                if (u != null)
                {
                    dt.Table3.DeleteOnSubmit(u);
                    dt.SubmitChanges();
                }
            }
            //創(chuàng)建新的用戶狀態(tài)信息
            Table3 userstatus = new Table3
            {
                abc = UserName
            };
            //插入到數(shù)據(jù)庫表格UserStatus中
            dt.Table3.InsertOnSubmit(userstatus);
            dt.SubmitChanges();

            return true;
        }
        catch (System.InvalidOperationException)
        {
            return false;
        }
    }

也就是說,刪除操作前需要先判定數(shù)據(jù)表格是否記空--這可以通過紅色的if語句((1)處)來實(shí)現(xiàn)。

如此以來,無論表格中是否事先存在記錄都可以往下執(zhí)行可能的刪除及插入操作了。

[二]

再來看一個(gè)例子,例如:

    //刪除舊的郵件
    public static void DeleteSubject(string UserName, string host)
    {
        eMailDataContext dt = new eMailDataContext();
string cmdText = "delete from MailDownloadTemp
where UserName=" + "'"+UserName +"'"+ " and Host=" + "'"+host+"'";
        try
        {
            int result = dt.ExecuteCommand(cmdText);
            return;
        }
        catch (System.InvalidOperationException)
        {
            return;
        }
    }

上述操作同樣拋出異常。因此,需要同上面提到的那樣,先進(jìn)行數(shù)據(jù)庫表格記錄數(shù)據(jù)判斷,再進(jìn)行可能的刪除操作。因此,再修改上面代碼,如下所示:

  //刪除舊的郵件
    public static void DeleteSubject(string UserName, string host)
    {
        eMailDataContext dt = new eMailDataContext();
        if (dt.MailDownloadTemp.Count() == 0)
            return;
 string cmdText = "delete from MailDownloadTemp
where UserName=" + "'"+UserName +"'"+ " and Host=" + "'"+host+"'";
        try
        {
            int result = dt.ExecuteCommand(cmdText);
            return;
        }
        catch (System.InvalidOperationException)
        {
            return;
        }
    }

這樣便OK了。


當(dāng)前名稱:淺談LINQ如何插入刪除和更新數(shù)據(jù)庫記錄備注
路徑分享:http://uogjgqi.cn/article/dhjoojh.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流