/// <summary> /// 将sql分块,前后加上字典,以优化性能。 /// </summary> /// <param name="type"></param> /// <param name="func"></param> /// <returns></returns> protected StringBuilder GetSliceSql(SqlTypeEnum type, Func <StringBuilder> func) { // 字段取值 if (_sqlDic.ContainsKey(type)) { return(_sqlDic[type]); } // 字典中没有相应的值,执行委托 var result = func(); // 存入字典,以备下一次调用 _sqlDic.Add(type, result); return(result); }
private string GetSql(SqlTypeEnum sqlTypeEnum, T entity, ref SQLHelper helper, string where) { string addSql = null, addSql2 = null, updateSql = null; PropertyInfo[] pis = typeof(T).GetProperties(); string propName; object propValue; EntityBase eb = entity as EntityBase; for (int i = 0; i < pis.Length; i++) { propName = pis[i].Name; if (sqlTypeEnum == SqlTypeEnum.Update && propName == eb.PrimaryKey) { continue; } propValue = pis[i].GetValue(entity, null); if (propValue == null) { continue; } helper.AddParameter("@" + propName, propValue); if (sqlTypeEnum == SqlTypeEnum.Add) { addSql += "[" + propName + "],"; addSql2 += "@" + propName + ","; } else if (sqlTypeEnum == SqlTypeEnum.Update) { updateSql += "[" + propName + "]=@" + propName + ","; } } if (sqlTypeEnum == SqlTypeEnum.Add) { return("insert into " + tableName + "(" + addSql.TrimEnd(',') + ") values(" + addSql2.TrimEnd(',') + ") select cast(scope_Identity() as int) as OutPutValue"); } else { propName = eb.PrimaryKey; propValue = eb.GetPropertyValue(eb.PrimaryKey); if (where == null) { helper.AddParameter("@" + propName, propValue); } return("update " + tableName + " set " + updateSql.TrimEnd(',') + " where " + (where == null ? (propName + "=@" + propName) : where)); } }
/// <summary> /// Gets the specified type. /// </summary> /// <param name="type">The type.</param> /// <param name="nullable">if set to <c>true</c> [nullable].</param> /// <returns>Returns type corresponding to type enum, and nullable parameter</returns> public static SqlType Get(SqlTypeEnum type, bool nullable) { return(collection.Single(e => e.SqlTypeEnum == type && e.Nullable == nullable)); }
/// <summary> /// Initializes a new instance of the <see cref="SqlType"/> class. /// </summary> /// <param name="sqlTypeEnum">The SQL type enum.</param> /// <param name="nullable">if set to <c>true</c> [nullable].</param> protected SqlType(SqlTypeEnum sqlTypeEnum, bool nullable) { SqlTypeEnum = sqlTypeEnum; Nullable = nullable; }