/// <summary>
 /// check that the class has [primarykey] attribute or not
 /// if yes true
 /// else false
 /// </summary>
 /// <param name="mytype">datatype [ex employee class or student class etc]</param>
 /// <returns></returns>
 private bool ContainsPrimaryKey(MyType myType)
 {
     foreach (PropertyInfo property in myType.GetType().GetProperties())
     {
         if (AttributeHeler.IsPrimaryKeyAttribute(property))
         {
             return(true);
         }
     }
     return(false);
 }
        /// <summary>
        /// create comma separated list of property values
        /// if includeprimary is true then primary key value also consider in list
        /// else primary key value is remove from list
        /// </summary>
        /// <param name="mytype">type of class [ex person class or student etc]</param>
        /// <param name="includeprimary">weather primary key property should consider in list or not if yes : consider , if false : removed from list</param>
        private void SetPropertiesValues(MyType myType, bool includePrimary = true)
        {
            string CompleteVal = string.Empty;

            foreach (PropertyInfo property in myType.GetType().GetProperties())
            {
                if (!AttributeHeler.CheckIgnoreColumn(property) && includePrimary == AttributeHeler.IsPrimaryKeyAttribute(property))
                {
                    TypeCode typeCode = Type.GetTypeCode(property.PropertyType);
                    string   Name     = property.Name;
                    Object   value    = property.GetValue(myType, null);
                    var      val      = ClassHelper <MyType> .SetValue(Name, value, myType);

                    CompleteVal += (ClassHelper <MyType> .CreateSqlString(val) + ",");
                }
            }
            CompleteVal      = CompleteVal.Remove(CompleteVal.Length - 1);
            PropertiesValues = CompleteVal;
        }
 /// <summary>
 /// create comma separated propertyname list
 /// if includeprimary is true then primary key propery also consider in list
 /// else primary key property is remove from list
 /// </summary>
 /// <param name="mytype">type of class [ex person class or student etc]</param>
 /// <param name="includeprimary">weather primary key property should consider in list or not if yes : consider , if false : removed from list</param>
 private void SetPropertiesNames(MyType myType, bool includePrimary = true)
 {
     foreach (var property in myType.GetType().GetProperties())
     {
         if (!AttributeHeler.CheckIgnoreColumn(property))
         {
             if (includePrimary)
             {
                 string Name = AttributeHeler.GetColumnName(property);
                 PropertiesNames += (Name + ",");
             }
             else if (!AttributeHeler.IsPrimaryKeyAttribute(property))
             {
                 string Name = AttributeHeler.GetColumnName(property);
                 PropertiesNames += (Name + ",");
             }
         }
     }
     PropertiesNames = PropertiesNames.Remove(PropertiesNames.Length - 1);
 }
        /// <summary>
        /// return primary key name
        /// </summary>
        /// <param name="mytype"></param>
        /// <returns></returns>
        private string SetPimaryKeyName(MyType myType)
        {
            var isContainsPrimarKey = ContainsPrimaryKey(myType);

            if (isContainsPrimarKey)
            {
                //foreach loop can be optimised
                foreach (PropertyInfo property in myType.GetType().GetProperties())
                {
                    if (AttributeHeler.IsPrimaryKeyAttribute(property))
                    {
                        PrimaryKeyNameInSourceCode = property.Name;
                        string primaryKeyName = AttributeHeler.GetColumnName(property);
                        PrimaryKeyNameInDB = primaryKeyName;
                        return(primaryKeyName);
                    }
                }
            }
            else
            {
                throw new Exception(ExceptionMessage.PK_NOT_EXIST);
            }
            throw new Exception("Error occured in SetPkName function");
        }