/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }