/// <summary>
        /// 哈希表生成Insert语句
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="ht">Hashtable</param>
        /// <returns>int</returns>
        public static StringBuilder InsertSql(string tableName, Hashtable ht)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(" INSERT INTO ");
            sb.Append(tableName);
            sb.Append("(");
            StringBuilder sp      = new StringBuilder();
            StringBuilder sbPrame = new StringBuilder();

            foreach (string key in ht.Keys)
            {
                if (ht[key] != null)
                {
                    sbPrame.Append(",[" + key + "]");
                    sp.Append("," + DbParameters.CreateDbParmCharacter() + "" + key);
                }
            }
            sb.Append(sbPrame.ToString().Substring(1, sbPrame.ToString().Length - 1) + ") VALUES (");
            sb.Append(sp.ToString().Substring(1, sp.ToString().Length - 1) + ")");
            return(sb);
        }
 /// <summary>
 /// 拼接删除SQL语句
 /// </summary>
 /// <param name="tableName">表名</param>
 /// <param name="pkName">字段主键</param>
 /// <returns></returns>
 public static StringBuilder DeleteSql(string tableName, string pkName)
 {
     return(new StringBuilder("DELETE FROM " + tableName + " WHERE " + pkName + " = " + DbParameters.CreateDbParmCharacter() + pkName + ""));
 }
        /// <summary>
        /// 泛型方法,反射生成UpdateSql语句
        /// </summary>
        /// <param name="entity">实体类</param>
        /// <returns>int</returns>
        public static string UpdateSql <T>(object entity)
        {
            string cacheKey = string.Format("T-SQL:UPDATE:{0}:{1}", typeof(T).Name, typeof(T).FullName.GetMd5Code());
            string cache    = CacheFactory.GetCache().Get <string>(cacheKey);

            if (string.IsNullOrEmpty(cache))
            {
                StringBuilder sb   = new StringBuilder();
                Type          type = entity.GetType();
                //表名
                string table = EntityAttributeHelper.GetEntityTable <T>();
                //主键
                string keyField = EntityAttributeHelper.GetEntityKey <T>();
                //获取不做映射的字段
                List <string> notMappedField = EntityAttributeHelper.GetNotMappedFields <T>();

                PropertyInfo[] props = type.GetProperties();

                sb.Append(" UPDATE ");
                sb.Append(table);
                sb.Append(" SET ");
                bool isFirstValue = true;
                foreach (PropertyInfo prop in props)
                {
                    if (!notMappedField.Contains(prop.Name))
                    {
                        object value = prop.GetValue(entity, null);
                        if (value != null && keyField != prop.Name)
                        {
                            if (value.GetType() == typeof(DateTime))
                            {
                                var time = (DateTime)value;
                                if (time.Ticks != 0 && time != DateTime.MinValue && time != SqlDateTime.MinValue.Value)
                                {
                                    if (isFirstValue)
                                    {
                                        isFirstValue = false;
                                        sb.Append("[" + prop.Name + "]");
                                        sb.Append("=");
                                        sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name);
                                    }
                                    else
                                    {
                                        sb.Append(",[" + prop.Name + "]");
                                        sb.Append("=");
                                        sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name);
                                    }
                                }
                            }
                            else
                            {
                                if (isFirstValue)
                                {
                                    isFirstValue = false;
                                    sb.Append("[" + prop.Name + "]");
                                    sb.Append("=");
                                    sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name);
                                }
                                else
                                {
                                    sb.Append(",[" + prop.Name + "]");
                                    sb.Append("=");
                                    sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name);
                                }
                            }
                        }
                        else
                        {
                            if (prop.PropertyType.IsNullableType())
                            {
                                sb.Append(",[" + prop.Name + "]");
                                sb.Append("=");
                                sb.Append(DbParameters.CreateDbParmCharacter() + prop.Name);
                            }
                        }
                    }
                }
                sb.Append(" WHERE ").Append(keyField).Append("=").Append(DbParameters.CreateDbParmCharacter() + keyField);

                cache = sb.ToString();
                CacheFactory.GetCache().Add(cacheKey, cache);
            }
            return(cache);
        }