国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

用日志記錄LINQ中的所有增刪改的SQL語句的方法

2024-07-10 13:13:17
字體:
來源:轉載
供稿:網(wǎng)友
我們知道LINQ中的增刪改都要調用SubmitChanges方法,我們記錄所有SQL的方式就是重寫(override)DataContext中的SubmitChanges方法,為了避免每次修改dbml文件時影響我們自己寫的內容,我們要先寫一個DataContext的分布類,在這個類中重寫SubmitChanges方法。
代碼如下
Code

public partial class DataClasses1DataContext
    {
        public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
        {
            //記錄日志(每天一個文件,記錄所有更改sql,日志會存在第一個盤的log文件夾下)
            string directory = Path.Combine(Directory.GetLogicalDrives().First(), "log");
            Directory.CreateDirectory(directory);
            string logFile = Path.Combine(directory,
                "log" + DateTime.Now.ToLongDateString() + ".txt");
            using (StreamWriter w = File.AppendText(logFile))
            {
              
                w.WriteLine("發(fā)生時間:{0}", DateTime.Now.ToString());
                w.WriteLine("日志內容為:");
                this.Log = w;
                try
                {
                    base.SubmitChanges(failureMode);
                }
                catch (Exception e)
                {
                    w.WriteLine("異常:" + e.Message + e.StackTrace);
                    w.WriteLine("--------------------------------------------------------------");

                    throw;
                }
                finally
                {
                    this.Log = null;
                }
                w.WriteLine("--------------------------------------------------------------");

            }


        }
    }

如果想把sql語句全部記錄到數(shù)據(jù)庫的代碼如下:

Code

public partial class DataClasses1DataContext
    {
        StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {

                sw.WriteLine("發(fā)生時間:{0}", DateTime.Now.ToString());
                sw.WriteLine("日志內容為:");
                this.Log = sw;
                try
                {
                    base.SubmitChanges(failureMode);
                    string sqlStr = "insert into logTable(Content)values( '"+sb.ToString()+"')";
                    //SqlConnection con=
                    using (SqlConnection con=new SqlConnection(this.Connection.ConnectionString))
                    {
                        con.Open();
                        SqlCommand cmd = new SqlCommand(sqlStr, con);
                        cmd.ExecuteNonQuery();
                    }

                }
                catch (Exception e)
                {
                    //記錄日志(每天一個文件,記錄所有更改sql,日志會存在第一個盤的log文件夾下)

                    string directory = Path.Combine(Directory.GetLogicalDrives().First(), "log");
                    Directory.CreateDirectory(directory);
                    string logFile = Path.Combine(directory,
                        "log" + DateTime.Now.ToLongDateString() + ".txt");
                    using (StreamWriter w = File.AppendText(logFile))
                    {
                        w.WriteLine("發(fā)生時間:{0}", DateTime.Now.ToString());
                        w.WriteLine("日志內容為:");
                        w.WriteLine(e.Message);

                    }
                }
                finally
                {
                    this.Log = null;
                }
    }

源碼下載
http://files.cnblogs.com/nuaalfm/LogLinqSql.rar
http://www.cnblogs.com/nuaalfm/archive/2009/01/20/1378841.html

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌拉特中旗| 惠安县| 九江市| 左权县| 罗定市| 定兴县| 衡东县| 德江县| 噶尔县| 北流市| 黑河市| 肥西县| 五大连池市| 盐边县| 隆德县| 斗六市| 班戈县| 永州市| 海城市| 康保县| 新化县| 开封县| 曲周县| 磐石市| 哈尔滨市| 蒙山县| 红河县| 田阳县| 会同县| 合肥市| 融水| 安塞县| 宿州市| 新民市| 交口县| 陇南市| 日喀则市| 林周县| 大方县| 华蓥市| 弥勒县|