/// <summary> /// 泛型方法,反射生成UpdateSql语句 /// </summary> /// <param name="entity">实体类</param> /// <returns>int</returns> public static StringBuilder UpdateEntitySql <T>(T entity) { Type type = entity.GetType(); StringBuilder sbSql = new StringBuilder(); sbSql.Append($"Update {type.GetMappingAttributeName()} SET "); bool isFirstValue = true; string pkName = AttributeHelper.GetEntityPrimaryKey <T>(); PropertyInfo[] props = type.GetProperties(); foreach (PropertyInfo prop in props) { string columnName = prop.GetMappingAttributeName(); if (prop.GetValue(entity, null) != null && pkName != columnName)//不更新主键 { if (isFirstValue) { isFirstValue = false; sbSql.Append(columnName); sbSql.Append("="); sbSql.Append(DbParameters.CreateDbParmCharacter() + columnName); } else { sbSql.Append("," + columnName); sbSql.Append("="); sbSql.Append(DbParameters.CreateDbParmCharacter() + columnName); } } } sbSql.Append(" Where ").Append(pkName).Append("=").Append(DbParameters.CreateDbParmCharacter() + pkName); return(sbSql); }
/// <summary> /// 拼接删除SQL语句 /// </summary> /// <param name="entity">实体类</param> /// <returns></returns> public static StringBuilder DeleteEntitySql <T>(T entity) { Type type = entity.GetType(); PropertyInfo[] props = type.GetProperties(); StringBuilder sb = new StringBuilder($"Delete From {type.GetMappingAttributeName()} Where 1=1"); foreach (PropertyInfo prop in props) { if (prop.GetValue(entity) != null) { sb.Append($" AND {prop.GetMappingAttributeName()} = { DbParameters.CreateDbParmCharacter() }{ prop.GetMappingAttributeName()}"); } } return(sb); }
/// <summary> /// 对象参数转换DbParameter /// </summary> /// <returns></returns> public static DbParameter[] GetParameter(Hashtable ht) { IList <DbParameter> parameter = new List <DbParameter>(); DbType dbtype = new DbType(); foreach (string key in ht.Keys) { if (ht[key] is DateTime) { dbtype = DbType.DateTime; } else { dbtype = DbType.String; } parameter.Add(DbParameters.CreateDbParameter(DbParameters.CreateDbParmCharacter() + key, ht[key], dbtype)); } return(parameter.ToArray()); }
/// <summary> /// 对象参数转换DbParameter /// </summary> /// <returns></returns> public static DbParameter[] GetParameter <T>(T entity) { IList <DbParameter> parameter = new List <DbParameter>(); DbType dbtype = new DbType(); Type type = entity.GetType(); PropertyInfo[] props = type.GetProperties(); foreach (PropertyInfo pi in props) { if (pi.GetValue(entity, null) != null) { switch (pi.PropertyType.ToString().ToLower()) { case "system.nullable`1[system.int32]": dbtype = DbType.Int32; break; case "system.nullable`1[system.decimal]": dbtype = DbType.Decimal; break; case "system.nullable`1[system.datetime]": dbtype = DbType.DateTime; break; case "system.nullable`1[system.int64]": dbtype = DbType.Int64; break; case "system.nullable`1[system.boolean]": dbtype = DbType.Boolean; break; default: dbtype = DbType.String; break; } parameter.Add(DbParameters.CreateDbParameter(DbParameters.CreateDbParmCharacter() + pi.GetMappingAttributeName(), pi.GetValue(entity, null), dbtype)); } } return(parameter.ToArray()); }
/// <summary> /// 泛型方法,反射生成InsertSql语句 /// </summary> /// <param name="entity">实体类</param> /// <returns>int</returns> public static StringBuilder InsertEntitySql <T>(T entity) { Type type = entity.GetType(); StringBuilder sbSql = new StringBuilder(); sbSql.Append($"Insert Into {type.GetMappingAttributeName()} ("); StringBuilder sp = new StringBuilder(); StringBuilder sb_prame = new StringBuilder(); PropertyInfo[] props = type.GetProperties(); foreach (PropertyInfo prop in props) { if (prop.GetValue(entity) != null) { sb_prame.Append($",{prop.GetMappingAttributeName()}"); sp.Append($",{DbParameters.CreateDbParmCharacter() }{prop.GetMappingAttributeName()}");//?ID } } sbSql.Append(sb_prame.ToString().Substring(1, sb_prame.ToString().Length - 1) + ") Values ("); sbSql.Append(sp.ToString().Substring(1, sp.ToString().Length - 1) + ")"); return(sbSql); }