成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談LINQ如何插入刪除和更新數據庫記錄備注

開發 后端
使用LINQ TO SQL生成數據庫訪問層極大地簡化了此前數據庫訪問層的設計,本文將簡單講解LINQ如何插入、刪除和更新數據庫記錄備注。

一、引言

使用LINQ TO SQL生成數據庫訪問層極大地簡化了此前數據庫訪問層的設計(以前基于SQL SERVER的開發大多是基于SQLHELPER或微軟企業級的DAAB吧?)。

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

二、問題描述

[一]

本文中首先記錄的是使用LINQ插入數據庫記錄時涉及的一個基本概念級問題。

請看下面的代碼片斷:

public  bool InsertUserStatus(string UserName)
    {
        eMailDataContext dt = new eMailDataContext();
        try
        {
            //刪除可能存在的原有用戶狀態信息
           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();
                //}
            //}
            //創建新的用戶狀態信息
            Table3 userstatus = new Table3
            {
                abc = UserName
            };
            //插入到數據庫表格UserStatus中
            dt.Table3.InsertOnSubmit(userstatus);

            dt.SubmitChanges();

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

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

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

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

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

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

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

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

[二]

再來看一個例子,例如:

    //刪除舊的郵件
    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;
        }
    }

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

  //刪除舊的郵件
    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了。

【編輯推薦】

  1. 使用LINQ和ADO.NET創建Silverlight程序
  2. 手把手教你用好LINQ to SQL
  3. LINQ to SQL實現數據訪問通用基類
責任編輯:彭凡 來源: ITPUB
相關推薦

2009-09-14 13:30:04

Linq數據和對象

2009-07-07 09:24:37

LINQ檢索

2009-09-14 15:45:28

LINQ刪除XML節點

2009-05-14 14:23:25

微軟ado.netLINQ

2009-09-14 16:12:57

LINQ刪除記錄

2009-09-07 17:32:14

LINQ檢索數據

2009-09-16 11:15:52

Linq聯接數據

2019-08-13 15:52:34

數據庫同步遷移

2009-09-14 15:37:06

LINQ映射數據庫

2009-09-18 13:58:00

LINQ查詢數據庫

2009-09-14 10:29:02

LINQ刪除記錄

2009-09-18 15:19:19

LINQ to SQL

2011-08-04 18:00:47

SQLite數據庫批量數據

2010-04-13 10:23:40

Oracle數據庫

2011-04-06 17:35:17

Access數據庫空記錄

2020-08-31 07:00:00

數據庫數據庫同步

2009-11-04 12:37:32

ADO.NET SQL

2009-09-15 16:31:15

LINQ Custom

2009-09-09 13:07:37

創建Linq數據庫

2009-09-17 09:57:08

linq創建數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品影院 | 中文字幕视频在线看 | 欧美成人一区二免费视频软件 | 国产一区二区在线免费观看 | 亚洲精品乱码久久久久久久久久 | 国产综合在线视频 | 美女露尿口视频 | 蜜桃视频在线观看www社区 | av中文字幕网站 | 特级毛片爽www免费版 | 免费观看一级毛片 | 91视频官网 | 日韩亚洲一区二区 | 日韩中文字幕一区二区 | 精品日韩 | 日本人和亚洲人zjzjhd | 97精品超碰一区二区三区 | 成人欧美一区二区 | 久久久久9999亚洲精品 | 亚洲一区二区三区四区五区中文 | 毛片黄片免费看 | 国产美女黄色片 | 中文字幕二区三区 | 一区二区三区不卡视频 | 激情五月综合网 | 天天看天天摸天天操 | 精品视频一区二区三区 | 久久蜜桃资源一区二区老牛 | 日韩美女一区二区三区在线观看 | 国产一区二区三区在线免费 | 国产高潮好爽受不了了夜夜做 | 久久国内精品 | 午夜寂寞福利视频 | 国产高清在线精品一区二区三区 | 久久精品一区二区三区四区 | 日韩免费一区二区 | 天天弄| 久久国产日韩 | 99re热精品视频 | 国产精品久久99 | 日本在线免费观看 |