Ejemplo n.º 1
0
        /// <summary>
        /// 获得数据库连接
        /// </summary>
        private void PrepareCommand()
        {
            // 写入调试信息
                        #if (DEBUG)
            int milliStart = Environment.TickCount;
            Trace.WriteLine(DateTime.Now.ToString(SystemInfo.TimeFormat) + " :Begin: " + MethodBase.GetCurrentMethod().ReflectedType.Name + "." + MethodBase.GetCurrentMethod().Name);
                        #endif

            this.sqlOperation  = DbOperation.Update;
            this.CommandText   = string.Empty;
            this.TableName     = string.Empty;
            this.InsertValue   = string.Empty;
            this.InsertField   = string.Empty;
            this.UpdateSql     = string.Empty;
            this.WhereSql      = string.Empty;
            this.ProcedureName = string.Empty;
            this.OperationType = DbOperationType.NOACTION;
            // 判断是否为空,要区别静态方法与动态调用方法
            if (!DBProvider.AutoOpenClose)
            {
                DBProvider.GetDbCommand().Parameters.Clear();
            }

            // 写入调试信息
                        #if (DEBUG)
            int milliEnd = Environment.TickCount;
            Trace.WriteLine(DateTime.Now.ToString(SystemInfo.TimeFormat) + " Ticks: " + TimeSpan.FromMilliseconds(milliEnd - milliStart).ToString() + " :End: " + MethodBase.GetCurrentMethod().ReflectedType.Name + "." + MethodBase.GetCurrentMethod().Name);
                        #endif
        }
Ejemplo n.º 2
0
 public DbBulkOperation(DbOperationType operationType, Type entityType, string statement, object parameter)
 {
     this.operationType = operationType;
     this.entityType    = entityType;
     this.statement     = statement;
     this.parameter     = parameter;
 }
Ejemplo n.º 3
0
 public DotEntityDbCommand(DbOperationType operationType, string query, IList <QueryInfo> queryParameters, string keyColumn = "Id", CommandBehavior commandBehavior = CommandBehavior.Default)
 {
     OperationType   = operationType;
     Query           = query;
     QueryInfos      = queryParameters;
     KeyColumn       = keyColumn;
     CommandBehavior = commandBehavior;
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 通过operationType将实体对象转换成参数化的Sql语句
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="operationType">数据库操作类型</param>
        /// <param name="entity">实体对象(INSERT,UPDATE时使用)</param>
        /// <param name="paramsStartIndex">参数化Sql开始的索引</param>
        /// <param name="dynamicParameters">参数列表(INSERT,UPDATE,DELETE,SELECT时使用)</param>
        /// <returns></returns>
        private string ToParameterizedSqlString <T>(DbOperationType operationType, T entity, int paramsStartIndex, ref DynamicParameters dynamicParameters)
            where T : class
        {
            Type t = typeof(T);

            MapperPropertyInfo[] mappers = SqlServerUtilities.GetMapperPropertyInfo <T>(entity);
            string[]             fields  = new string[0];

            string[] parameterized = new string[0];
            string   sql           = string.Empty;

            switch (operationType)
            {
            case DbOperationType.INSERT:
                parameterized = SqlServerUtilities.GetParameterized(mappers, paramsStartIndex, ref dynamicParameters, out fields);
                sql           = string.Format("INSERT INTO dbo.[{0}] ({1}) VALUES ({2})",
                                              t.Name,
                                              fields.ToString(p => "[" + p + "]"),
                                              parameterized.ToString(null)
                                              );
                break;

            case DbOperationType.UPDATE:
                parameterized = SqlServerUtilities.GetParameterized(mappers, paramsStartIndex, ref dynamicParameters, out fields);
                sql           = string.Format("UPDATE dbo.[{0}] SET {1}",
                                              t.Name,
                                              fields.Combine(parameterized, (p, q) => "[" + p + "]" + "=" + q).ToString(null)
                                              );
                break;

            case DbOperationType.DELETE:
                sql = string.Format("DELETE FROM dbo.[{0}]", t.Name);
                break;

            case DbOperationType.SELECT:
                fields = SqlServerUtilities.GetFields(mappers);
                sql    = string.Format("SELECT {0} FROM dbo.[{1}] (NOLOCK)",
                                       fields.ToString(p => "[" + p + "]"),
                                       t.Name
                                       );
                break;

            case DbOperationType.COUNT:
                sql = string.Format("SELECT COUNT(*) FROM dbo.[{0}] (NOLOCK)", t.Name);
                break;

            case DbOperationType.EXISTS:
                sql = string.Format("SELECT 1 FROM dbo.[{0}] (NOLOCK)", t.Name);
                break;
            }
            return(sql);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 通过operationType将实体对象转换成参数化的Sql语句
 /// </summary>
 /// <typeparam name="T">实体类型</typeparam>
 /// <param name="operationType">数据库操作类型</param>
 /// <param name="entity">实体对象(INSERT,UPDATE时使用)</param>
 /// <param name="dynamicParameters">参数列表(INSERT,UPDATE,DELETE,SELECT时使用)</param>
 /// <returns></returns>
 private string ToParameterizedSqlString <T>(DbOperationType operationType, T entity, ref DynamicParameters dynamicParameters)
     where T : class
 {
     return(ToParameterizedSqlString <T>(operationType, entity, 0, ref dynamicParameters));
 }
Ejemplo n.º 6
0
        protected internal virtual void performEntityOperation(CachedDbEntity cachedDbEntity, DbOperationType type)
        {
            DbEntityOperation dbOperation = new DbEntityOperation();

            dbOperation.Entity = cachedDbEntity.Entity;
            dbOperation.FlushRelevantEntityReferences = cachedDbEntity.FlushRelevantEntityReferences;
            dbOperation.OperationType = type;
            dbOperationManager.addOperation(dbOperation);
        }
Ejemplo n.º 7
0
        private DbBulkOperation createDbBulkOperation(Type entityType, string statement, object parameter, DbOperationType operationType)
        {
            // create operation
            DbBulkOperation bulkOperation = new DbBulkOperation();

            // configure operation
            bulkOperation.OperationType = operationType;
            bulkOperation.EntityType    = entityType;
            bulkOperation.Statement     = statement;
            bulkOperation.Parameter     = parameter;
            return(bulkOperation);
        }
Ejemplo n.º 8
0
        protected internal virtual DbBulkOperation performBulkOperationPreserveOrder(Type entityType, string statement, object parameter, DbOperationType operationType)
        {
            DbBulkOperation bulkOperation = createDbBulkOperation(entityType, statement, parameter, operationType);

            // schedule operation
            dbOperationManager.addOperationPreserveOrder(bulkOperation);
            return(bulkOperation);
        }
Ejemplo n.º 9
0
 public virtual void recycle()
 {
     // clean out the object state
     operationType = null;
     entityType    = null;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// 开始存储过程
 /// </summary>
 /// <param name="procedureName">存储过程名称</param>
 /// <param name="operationType">操作类型</param>
 public void BeginExecProcedure(string procedureName, DbOperationType operationType)
 {
     this.OperationType = operationType;
     Begin(procedureName, DbOperation.ExecProcedure);
 }
Ejemplo n.º 11
0
 public static void QuickLog <C>(this ILogger <C> logger, DbOperationType dbOperationType, Entity entity, int id)
 => logger.LogInformation(string.Format(dbOperationType.Description(), entity.GetType().Name, id));
Ejemplo n.º 12
0
 public static void QuickLog <C>(this ILogger <C> logger, DbOperationType dbOperationType, Type type, int id)
 => logger.LogInformation(string.Format(dbOperationType.Description(), type.Name, id));