/// <summary>
        /// Maps a data reader to a specification attribute
        /// </summary>
        /// <param name="dataReader">IDataReader</param>
        /// <returns>Specification attribute</returns>
        private DBSpecificationAttribute GetSpecificationAttributeFromReader(IDataReader dataReader)
        {
            var item = new DBSpecificationAttribute();

            item.SpecificationAttributeId = NopSqlDataHelper.GetInt(dataReader, "SpecificationAttributeID");
            item.Name         = NopSqlDataHelper.GetString(dataReader, "Name");
            item.DisplayOrder = NopSqlDataHelper.GetInt(dataReader, "DisplayOrder");
            return(item);
        }
        /// <summary>
        /// Maps a data reader to a spacification attribute
        /// </summary>
        /// <param name="dataReader">IDataReader</param>
        /// <returns>Specification attribute</returns>
        private DBSpecificationAttribute GetSpecificationAttributeFromReader(IDataReader dataReader)
        {
            DBSpecificationAttribute specificationAttribute = new DBSpecificationAttribute();

            specificationAttribute.SpecificationAttributeID = NopSqlDataHelper.GetInt(dataReader, "SpecificationAttributeID");
            specificationAttribute.Name         = NopSqlDataHelper.GetString(dataReader, "Name");
            specificationAttribute.DisplayOrder = NopSqlDataHelper.GetInt(dataReader, "DisplayOrder");
            return(specificationAttribute);
        }
        /// <summary>
        /// Updates the specification attribute
        /// </summary>
        /// <param name="specificationAttributeId">The specification attribute identifier</param>
        /// <param name="name">The name</param>
        /// <param name="displayOrder">Display order</param>
        /// <returns>Specification attribute</returns>
        public override DBSpecificationAttribute UpdateSpecificationAttribute(int specificationAttributeId, string name, int displayOrder)
        {
            DBSpecificationAttribute item = null;
            Database  db        = NopSqlDataHelper.CreateConnection(_sqlConnectionString);
            DbCommand dbCommand = db.GetStoredProcCommand("Nop_SpecificationAttributeUpdate");

            db.AddInParameter(dbCommand, "SpecificationAttributeID", DbType.Int32, specificationAttributeId);
            db.AddInParameter(dbCommand, "Name", DbType.String, name);
            db.AddInParameter(dbCommand, "DisplayOrder", DbType.String, displayOrder);
            if (db.ExecuteNonQuery(dbCommand) > 0)
            {
                item = GetSpecificationAttributeById(specificationAttributeId, 0);
            }

            return(item);
        }
        /// <summary>
        /// Inserts a specification attribute
        /// </summary>
        /// <param name="name">The name</param>
        /// <param name="displayOrder">Display order</param>
        /// <returns>Specification attribute</returns>
        public override DBSpecificationAttribute InsertSpecificationAttribute(string name, int displayOrder)
        {
            DBSpecificationAttribute specificationAttribute = null;
            Database  db        = NopSqlDataHelper.CreateConnection(_sqlConnectionString);
            DbCommand dbCommand = db.GetStoredProcCommand("Nop_SpecificationAttributeInsert");

            db.AddOutParameter(dbCommand, "SpecificationAttributeID", DbType.Int32, 0);
            db.AddInParameter(dbCommand, "Name", DbType.String, name);
            db.AddInParameter(dbCommand, "DisplayOrder", DbType.String, displayOrder);
            if (db.ExecuteNonQuery(dbCommand) > 0)
            {
                int SpecificationAttributeID = Convert.ToInt32(db.GetParameterValue(dbCommand, "@SpecificationAttributeID"));
                specificationAttribute = GetSpecificationAttributeByID(SpecificationAttributeID);
            }
            return(specificationAttribute);
        }
        /// <summary>
        /// Gets specification attribute collection
        /// </summary>
        /// <returns>Specification attribute collection</returns>
        public override DBSpecificationAttributeCollection GetSpecificationAttributes()
        {
            DBSpecificationAttributeCollection specificationAttributeCollection = new DBSpecificationAttributeCollection();
            Database  db        = NopSqlDataHelper.CreateConnection(_sqlConnectionString);
            DbCommand dbCommand = db.GetStoredProcCommand("Nop_SpecificationAttributeLoadAll");

            using (IDataReader dataReader = db.ExecuteReader(dbCommand))
            {
                while (dataReader.Read())
                {
                    DBSpecificationAttribute specificationAttribute = GetSpecificationAttributeFromReader(dataReader);
                    specificationAttributeCollection.Add(specificationAttribute);
                }
            }

            return(specificationAttributeCollection);
        }
        /// <summary>
        /// Gets a specification attribute
        /// </summary>
        /// <param name="SpecificationAttributeID">The specification attribute identifier</param>
        /// <returns>Specification attribute</returns>
        public override DBSpecificationAttribute GetSpecificationAttributeByID(int SpecificationAttributeID)
        {
            DBSpecificationAttribute specificationAttribute = null;

            if (SpecificationAttributeID == 0)
            {
                return(specificationAttribute);
            }
            Database  db        = NopSqlDataHelper.CreateConnection(_sqlConnectionString);
            DbCommand dbCommand = db.GetStoredProcCommand("Nop_SpecificationAttributeLoadByPrimaryKey");

            db.AddInParameter(dbCommand, "SpecificationAttributeID", DbType.Int32, SpecificationAttributeID);
            using (IDataReader dataReader = db.ExecuteReader(dbCommand))
            {
                if (dataReader.Read())
                {
                    specificationAttribute = GetSpecificationAttributeFromReader(dataReader);
                }
            }
            return(specificationAttribute);
        }