Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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;
 }