/// <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 }
public DbBulkOperation(DbOperationType operationType, Type entityType, string statement, object parameter) { this.operationType = operationType; this.entityType = entityType; this.statement = statement; this.parameter = parameter; }
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; }
/// <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); }
/// <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)); }
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); }
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); }
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); }
public virtual void recycle() { // clean out the object state operationType = null; entityType = null; }
/// <summary> /// 开始存储过程 /// </summary> /// <param name="procedureName">存储过程名称</param> /// <param name="operationType">操作类型</param> public void BeginExecProcedure(string procedureName, DbOperationType operationType) { this.OperationType = operationType; Begin(procedureName, DbOperation.ExecProcedure); }
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));
public static void QuickLog <C>(this ILogger <C> logger, DbOperationType dbOperationType, Type type, int id) => logger.LogInformation(string.Format(dbOperationType.Description(), type.Name, id));