Пример #1
0
        /// <summary>
        /// 根据修改字段名及字段值参数、过滤条件Sql、过滤条件字段名及字段值参数修改实体对应数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="updateParam">修改字段名及字段值参数,例:new {Uname="joyet",Age = 110}</param>
        /// <param name="whereSql">过滤条件Sql</param>
        /// <param name="whereParam">过滤条件字段名及字段值参数,例:new {UserId=1}</param>
        /// <returns></returns>
        public virtual DbEntity Update <T>(object updateParam, string whereSql, object whereParam)
        {
            DbEntity dbEntity = null;
            Type     type     = typeof(T);

            if (updateParam == null)
            {
                return(dbEntity);
            }
            var attributeBuilder = new AttributeBuilder();
            var tableEntity      = attributeBuilder.GetTableInfo(type);
            List <TableColumnAttribute> updateColumns = attributeBuilder.GetColumnInfos(updateParam);

            if (updateColumns.Count < 0)
            {
                return(dbEntity);
            }
            string dbOperator = DbFactory.GetDbParamOperator();
            var    dbParams   = new List <IDbDataParameter>();
            List <TableColumnAttribute> whereColumns = attributeBuilder.GetColumnInfos(whereParam);
            StringBuilder sqlBuild = new StringBuilder("update {tableName} set {updateCriteria} {whereCriteria}");

            sqlBuild.Replace("{tableName}", tableEntity.TableName);
            HandleUpdateParam(updateColumns, ref sqlBuild, ref dbParams);
            HandleWhereParam(whereSql, whereColumns, ref sqlBuild, ref dbParams);
            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuild.ToString(),
                DbParams    = dbParams,
            };
            return(dbEntity);
        }
Пример #2
0
        /// <summary>
        /// 根据过滤条件参数(参数名和参数值)查询数据总数量
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="whereSql">过滤条件Sql</param>
        /// <param name="whereParam">过滤条件参数(参数名和参数值),例:new {Uname="joyet",Age = 110}</param>
        /// <returns></returns>
        public virtual DbEntity QueryTotalPageCount <T>(string whereSql, object whereParam)
        {
            DbEntity dbEntity         = null;
            Type     type             = typeof(T);
            var      attributeBuilder = new AttributeBuilder();
            var      tableEntity      = attributeBuilder.GetTableInfo(type);
            var      dbParams         = new List <IDbDataParameter>();
            string   dbOperator       = DbFactory.GetDbParamOperator();
            List <TableColumnAttribute> whereColumns = attributeBuilder.GetColumnInfos(whereParam);
            StringBuilder sqlBuilder = new StringBuilder("select count(*) from  {tableName} {whereCriteria}");

            sqlBuilder.Replace("{tableName}", tableEntity.TableName);

            //处理过滤字段参数
            var whereItem = HandleWhereParam(whereSql, whereColumns, sqlBuilder, dbParams);

            sqlBuilder = whereItem.Item1;
            dbParams   = whereItem.Item2;

            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuilder.ToString(),
                DbParams    = dbParams,
            };
            return(dbEntity);
        }
Пример #3
0
        /// <summary>
        /// 根据实体主键值修改其它字段数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        public virtual DbEntity Update <T>(T entity)
        {
            DbEntity dbEntity = null;

            if (entity == null)
            {
                return(dbEntity);
            }
            var type             = typeof(T);
            var attributeBuilder = new AttributeBuilder();
            var tableEntity      = attributeBuilder.GetTableInfo(type);
            var columns          = attributeBuilder.GetColumnInfos(type, entity);

            if (columns.Count < 0)
            {
                return(dbEntity);
            }
            var pkColumn      = columns.Where(a => a.IsPrimaryKey).FirstOrDefault();
            var updateColumns = columns.Where(a => !a.IsPrimaryKey).ToList();

            if (pkColumn == null || updateColumns.Count < 0)
            {
                return(dbEntity);
            }
            var dbOperator = DbFactory.GetDbParamOperator();
            var dbParams   = new List <IDbDataParameter>();
            var sqlBuilder = new StringBuilder("update {tableName} set {updateCriteria} {whereCriteria}");

            sqlBuilder.Replace("{tableName}", tableEntity.TableName);

            //处理更改字段参数
            var updateItem = HandleUpdateParam(updateColumns, sqlBuilder, dbParams);

            sqlBuilder = updateItem.Item1;
            dbParams   = updateItem.Item2;

            //处理过滤字段参数
            var whereItem = HandleWhereParam("", new List <TableColumnAttribute>()
            {
                pkColumn
            }, sqlBuilder, dbParams);

            sqlBuilder = whereItem.Item1;
            dbParams   = whereItem.Item2;

            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuilder.ToString(),
                DbParams    = dbParams
            };
            return(dbEntity);
        }
Пример #4
0
        /// <summary>
        ///  根据修改字段参数(参数名和参数值)、主键值修改数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="updateParam">修改字段参数(参数名和参数值),例:new {Uname="joyet",Age = 110}</param>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual DbEntity Update <T>(object updateParam, object id)
        {
            DbEntity dbEntity = null;

            if (updateParam == null || id == null)
            {
                return(dbEntity);
            }
            Type type             = typeof(T);
            var  attributeBuilder = new AttributeBuilder();
            var  tableEntity      = attributeBuilder.GetTableInfo(type);
            var  updateColumns    = attributeBuilder.GetColumnInfos(updateParam);
            var  pkColumn         = attributeBuilder.GetPkColumnInfo(type);

            if (updateColumns.Count < 0 || pkColumn == null)
            {
                return(dbEntity);
            }
            pkColumn.ColumnValue = id;
            var dbOperator = DbFactory.GetDbParamOperator();
            var dbParams   = new List <IDbDataParameter>();
            var sqlBuilder = new StringBuilder("update {tableName} set {updateCriteria} {whereCriteria}");

            sqlBuilder.Replace("{tableName}", tableEntity.TableName);

            //处理更改字段参数
            var updateItem = HandleUpdateParam(updateColumns, sqlBuilder, dbParams);

            sqlBuilder = updateItem.Item1;
            dbParams   = updateItem.Item2;

            //处理过滤字段参数
            var whereItem = HandleWhereParam("", new List <TableColumnAttribute>()
            {
                pkColumn
            }, sqlBuilder, dbParams);

            sqlBuilder = whereItem.Item1;
            dbParams   = whereItem.Item2;

            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuilder.ToString(),
                DbParams    = dbParams,
            };
            return(dbEntity);
        }
Пример #5
0
        /// <summary>
        /// 根据实体主键值修改其它字段数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity"></param>
        /// <returns></returns>
        public virtual DbEntity Update <T>(T entity)
        {
            DbEntity dbEntity = null;

            if (entity == null)
            {
                return(dbEntity);
            }
            var type             = typeof(T);
            var attributeBuilder = new AttributeBuilder();
            var tableEntity      = attributeBuilder.GetTableInfo(type);
            var columns          = attributeBuilder.GetColumnInfos(type, entity);

            if (columns.Count < 0)
            {
                return(dbEntity);
            }
            var pkColumn = columns.Where(a => a.IsPrimaryKey).FirstOrDefault();

            if (pkColumn == null || columns.Where(a => !a.IsPrimaryKey).FirstOrDefault() == null)
            {
                return(dbEntity);
            }
            var updateColumns = columns.Where(a => !a.IsPrimaryKey).ToList();
            var dbOperator    = DbFactory.GetDbParamOperator();
            var dbParams      = new List <IDbDataParameter>();
            var sqlBuild      = new StringBuilder("update {tableName} set {updateCriteria} where {pkColumn}={dbOperator}{pkColumn}");

            sqlBuild.Replace("{tableName}", tableEntity.TableName);
            sqlBuild.Replace("{pkColumn}", pkColumn.ColumnName);
            sqlBuild.Replace("{dbOperator}", dbOperator);
            HandleUpdateParam(updateColumns, ref sqlBuild, ref dbParams);
            dbParams.Add(DbFactory.GetDbParam(pkColumn));
            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuild.ToString(),
                DbParams    = dbParams
            };
            return(dbEntity);
        }
Пример #6
0
        /// <summary>
        /// 根据过滤条件Sql、过滤条件字段名及字段值参数删除实体对应数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="whereSql">过滤条件Sql</param>
        /// <param name="whereParam">过滤条件字段名及字段值参数,例:new {Uname="joyet",Age = 110}</param>
        /// <returns></returns>
        public virtual DbEntity Delete <T>(string whereSql, object whereParam)
        {
            DbEntity      dbEntity         = null;
            Type          type             = typeof(T);
            var           attributeBuilder = new AttributeBuilder();
            var           tableEntity      = attributeBuilder.GetTableInfo(type);
            var           dbOperatore      = DbFactory.GetDbParamOperator();
            var           dbParams         = new List <IDbDataParameter>();
            var           whereColumns     = attributeBuilder.GetColumnInfos(whereParam);
            StringBuilder sqlBuild         = new StringBuilder("delete from {tableName} {whereCriteria}");

            sqlBuild.Replace("{tableName}", tableEntity.TableName);
            HandleWhereParam(whereSql, whereColumns, ref sqlBuild, ref dbParams);
            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuild.ToString(),
                DbParams    = dbParams
            };
            return(dbEntity);
        }
Пример #7
0
        /// <summary>
        ///  修改字段名及字段值参数、主键值修改实体对应数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="updateParam">修改字段名及字段值参数,例:new {Uname="joyet",Age = 110}</param>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual DbEntity Update <T>(object updateParam, object id)
        {
            DbEntity dbEntity = null;

            if (updateParam == null || id == null)
            {
                return(dbEntity);
            }
            Type type             = typeof(T);
            var  attributeBuilder = new AttributeBuilder();
            var  tableEntity      = attributeBuilder.GetTableInfo(type);
            var  updateColumns    = attributeBuilder.GetColumnInfos(updateParam);
            var  pkColumn         = attributeBuilder.GetPkColumnInfo(type);

            if (updateColumns.Count < 0 || pkColumn == null)
            {
                return(dbEntity);
            }
            pkColumn.ColumnValue = id;
            var           dbOperator = DbFactory.GetDbParamOperator();
            var           dbParams   = new List <IDbDataParameter>();
            StringBuilder sqlBuild   = new StringBuilder("update {tableName} set {updateCriteria}  where {pkColumn}={dbOperator}{pkColumn}");

            sqlBuild.Replace("{tableName}", tableEntity.TableName);
            sqlBuild.Replace("{pkColumn}", pkColumn.ColumnName);
            sqlBuild.Replace("{dbOperator}", dbOperator);
            HandleUpdateParam(updateColumns, ref sqlBuild, ref dbParams);
            dbParams.Add(DbFactory.GetDbParam(pkColumn));
            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuild.ToString(),
                DbParams    = dbParams,
            };
            return(dbEntity);
        }