/// <summary>
        /// Gets a product attribute
        /// </summary>
        /// <param name="ProductAttributeID">Product attribute identifier</param>
        /// <returns>Product attribute </returns>
        public static ProductAttribute GetProductAttributeByID(int ProductAttributeID)
        {
            if (ProductAttributeID == 0)
            {
                return(null);
            }

            string key  = string.Format(PRODUCTATTRIBUTES_BY_ID_KEY, ProductAttributeID);
            object obj2 = NopCache.Get(key);

            if (ProductAttributeManager.CacheEnabled && (obj2 != null))
            {
                return((ProductAttribute)obj2);
            }

            DBProductAttribute dbItem = DBProviderManager <DBProductAttributeProvider> .Provider.GetProductAttributeByID(ProductAttributeID);

            ProductAttribute productAttribute = DBMapping(dbItem);

            if (ProductAttributeManager.CacheEnabled)
            {
                NopCache.Max(key, productAttribute);
            }
            return(productAttribute);
        }
        /// <summary>
        /// Inserts a product attribute
        /// </summary>
        /// <param name="Name">The name</param>
        /// <param name="Description">The description</param>
        /// <returns>Product attribute </returns>
        public static ProductAttribute InsertProductAttribute(string Name, string Description)
        {
            DBProductAttribute dbItem = DBProviderManager <DBProductAttributeProvider> .Provider.InsertProductAttribute(Name, Description);

            ProductAttribute productAttribute = DBMapping(dbItem);

            if (ProductAttributeManager.CacheEnabled)
            {
                NopCache.RemoveByPattern(PRODUCTATTRIBUTES_PATTERN_KEY);
                NopCache.RemoveByPattern(PRODUCTVARIANTATTRIBUTES_PATTERN_KEY);
                NopCache.RemoveByPattern(PRODUCTVARIANTATTRIBUTEVALUES_PATTERN_KEY);
            }
            return(productAttribute);
        }
        private static ProductAttribute DBMapping(DBProductAttribute dbItem)
        {
            if (dbItem == null)
            {
                return(null);
            }

            ProductAttribute item = new ProductAttribute();

            item.ProductAttributeID = dbItem.ProductAttributeID;
            item.Name        = dbItem.Name;
            item.Description = dbItem.Description;

            return(item);
        }