Esempio n. 1
0
 public void AddTest()
 {
     for (int i = 0; i < 10; i++)
     {
         DBLogEntity entity = new DBLogEntity();
         entity.tabName = "tbUser";
         entity.tId     = "1";
         entity.lType   = 2;
         entity.sql     = "";
         entity.paras   = "";
         entity.ms      = 10;
         entity.uId     = "user" + (i + 1);
         entity.ctime   = DateTime.Now;
         dbService.Add <DBLogEntity>("YMOA", "DBLog", entity);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 执行DB操作
        /// </summary>
        /// <typeparam name="T">返回类型</typeparam>
        /// <param name="p">当前执行方法</param>
        /// <param name="entity">数据库操作日志</param>
        /// <returns></returns>
        private T InvokeMethodWithDB <T>(Func <T> p, DBLogEntity entity)
        {
            T         retObj = default(T);
            Stopwatch sw     = new Stopwatch();

            sw.Start();
            retObj = p();
            sw.Stop();
            entity.ms    = sw.ElapsedMilliseconds;
            entity.uId   = HttpContext.Current.Session["UserId"].ToString();
            entity.ctime = DateTime.Now;
            Task.Factory.StartNew(() =>
            {
                new MongoDbService().Add <DBLogEntity>(ConfigurationManager.AppSettings["MongoDb_Name"], MongoDBCollection, entity);
            });
            return(retObj);
        }
Esempio n. 3
0
        /// <summary>
        /// 执行标准单表Insert&Update操作
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="tabName">表名</param>
        /// <param name="paras">参数</param>
        /// <param name="keyFild">主键字段</param>
        /// <returns></returns>
        protected int StandardInsertOrUpdate(string tabName, Dictionary <string, object> paras, string keyFild = "ID", bool needLog = false, OperateType operateType = OperateType.None)
        {
            var fields = GetFieldsFromDictionary(paras, keyFild);
            var sql    = "";

            if (paras[keyFild].ToString().Equals("0"))
            {
                var fieldsSql1 = String.Join(",", fields);
                var fieldsSql2 = String.Join(",", fields.Select(field => "@" + field));
                sql = String.Format("INSERT {0} ({1}) VALUES ({2});", tabName, fieldsSql1, fieldsSql2);
            }
            else
            {
                var fieldsSql = String.Join(",", fields.Select(field => field + " = @" + field));
                sql = String.Format("UPDATE {0} SET {1} WHERE {2} = @{2}", tabName, fieldsSql, keyFild);
            }

            using (IDbConnection dbConnection = GetConnection())
            {
                if (needLog)
                {
                    DBLogEntity entity = new DBLogEntity();
                    entity.tabName = tabName;
                    entity.tId     = paras[keyFild].ToString();
                    entity.lType   = (int)operateType;
                    entity.sql     = sql;
                    entity.paras   = paras.ToJson();
                    return(InvokeMethodWithDB <int>(() =>
                    {
                        int i = dbConnection.Execute(sql, paras);
                        if (entity.tId.Equals("0"))
                        {
                            //获得刚新增的ID
                            entity.tId = dbConnection.QueryFirst <string>(string.Format("SELECT MAX({0}) FROM {1}", keyFild, tabName));
                        }
                        return i;
                    }, entity));
                }
                else
                {
                    return(dbConnection.Execute(sql, paras));
                }
            }
        }
Esempio n. 4
0
 /// <summary>
 /// 执行标准单表Insert&Update操作
 /// </summary>
 /// <param name="connectionString"></param>
 /// <param name="tabName">表名</param>
 /// <param name="paras">参数</param>
 /// <param name="keyFild">主键字段</param>
 /// <returns></returns>
 private int StandardInsertOrUpdate(string sql, string tabName, Dictionary <string, object> paras, string keyFild, bool needLog, OperateType operateType)
 {
     using (IDbConnection dbConnection = GetConnection())
     {
         if (needLog)
         {
             DBLogEntity entity = new DBLogEntity();
             entity.tabName = tabName;
             entity.tId     = paras[keyFild].ToString();
             entity.lType   = (int)operateType;
             entity.sql     = sql;
             entity.paras   = paras.ToJson();
             return(InvokeMethodWithDB <int>(() =>
             {
                 int i = dbConnection.Execute(sql, paras);
                 return i;
             }, entity));
         }
         else
         {
             return(dbConnection.Execute(sql, paras));
         }
     }
 }
Esempio n. 5
0
 /// <summary>
 /// 查询单笔
 /// </summary>
 /// <typeparam name="T">返回类型</typeparam>
 /// <param name="sql"></param>
 /// <param name="param">参数</param>
 /// <param name="commandType">SQL命令类型</param>
 /// <param name="logEntity">DBLog</param>
 /// <returns></returns>
 protected T QuerySingle <T>(string sql, object param = null, CommandType commandType = CommandType.Text, DBLogEntity logEntity = null)
 {
     if (logEntity == null)
     {
         return(_QuerySingle <T>(sql, param, commandType));
     }
     else
     {
         return(InvokeMethodWithDB <T>(() =>
         {
             var r = _QuerySingle <T>(sql, param, commandType);
             if (!string.IsNullOrEmpty(logEntity._id) && logEntity._id != "0")
             {
                 using (IDbConnection conn = GetConnection()) //获得刚新增的ID
                     logEntity.tId = conn.QueryFirst <string>(string.Format("SELECT MAX({0}) FROM {1}", "ID", logEntity.tabName));
             }
             return r;
         }, logEntity));
     }
 }