EntityFramework6写的数据访问框架之一 BaseDb

来源:互联网 发布:mac如何切换双系统 编辑:程序博客网 时间:2024/05/22 07:56
using System;using System.Collections.Generic;using System.Data.Entity;using System.Data.Entity.ModelConfiguration.Conventions;using System.Diagnostics;using System.Linq;using System.Text;namespace MyTest{    public class BaseDb : DbContext    {        bool isNew = true;//是否是新的sql执行        string strMsg = "";//sql执行的相关信息        string strConn = "";//数据库连接字符串        string UserName = "";//日志用户名称        string AdditionalInfo = "";//日志额外信息        public BaseDb(string connString) : // 数据库链接字符串            base(connString)        {            strConn = connString;            Database.SetInitializer<BaseDb>(null);//设置为空,防止自动检查和生成            base.Database.Log = AddLogger;        }        public BaseDb(string connString, string logUserName, string logAdditionalInfo) : // 数据库链接字符串            base(connString)        {            strConn = connString;            Database.SetInitializer<BaseDb>(null);//设置为空,防止自动检查和生成            UserName = logUserName;            AdditionalInfo = logAdditionalInfo;            base.Database.Log = AddLogger;        }        /// <summary>        /// 添加日志        /// </summary>        /// <param name="info"></param>        public void AddLogger(string info)        {            if (info != "\r\n" && (!info.Contains("Sys_EventLog")))            {                string strTemp = info.ToUpper().Trim();                if (isNew)                {                    //记录增删改                    if (strTemp.StartsWith("INSERT") || strTemp.StartsWith("UPDATE") || strTemp.StartsWith("DELETE"))                    {                        strMsg = info;                        isNew = false;                    }                }                else                {                    if (strTemp.StartsWith("CLOSED CONNECTION"))                    {                        //增加新日志                        using (BaseDb db = new BaseDb(strConn))                        {                            try                            {                                //保存日志到数据库或其他地方                            }                            catch (Exception ex)                            {                                using (System.IO.StreamWriter sw = new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "//logError.txt"))                                {                                    sw.Write(ex.Message);                                    sw.Flush();                                }                            }                        }                        //清空                        strMsg = "";                        isNew = true;                    }                    else                    {                        strMsg += info;                    }                }            }        }    }    public class BaseDb<T> : BaseDb where T : class    {        public BaseDb(string connString) : // 数据库链接字符串            base(connString)        {            Database.SetInitializer<BaseDb<T>>(null);//设置为空,防止自动检查和生成        }        public BaseDb(string connString, string logUserName, string logAdditionalInfo) : // 数据库链接字符串            base(connString, logUserName, logAdditionalInfo)        {            Database.SetInitializer<BaseDb<T>>(null);//设置为空,防止自动检查和生成        }        public DbSet<T> Entities { get; set; }    }}

0 0