private Utility_class_User BuildUserInternal(T poco, long IdInUseTable, string userName, string password)
        {
            Utility_class_User utility_class_User = new Utility_class_User();

            //updating Utility_class_User name from poco name
            utility_class_User.GetType().GetProperties()[0].SetValue(utility_class_User, typeof(T).GetProperties()[0].GetValue(poco));
            utility_class_User.GetType().GetProperties()[1].SetValue(utility_class_User, typeof(T).GetProperties()[1].GetValue(poco));
            if (password != null)
            {
                utility_class_User.GetType().GetProperty("PASSWORD").SetValue(utility_class_User, password);
            }
            if (userName != null)
            {
                utility_class_User.GetType().GetProperty("USER_NAME").SetValue(utility_class_User, userName);
            }

            utility_class_User.GetType().GetProperties()[3].SetValue(utility_class_User, typeof(T).Name);
            for (int i = 0; i < utility_class_User.GetType().GetProperties().Length; i++)
            {
                if (utility_class_User.GetType().GetProperties()[i].Name.ToLower().Contains(typeof(T).Name.ToLower().ChopCharsFromTheEndInverted(7).ToString()))
                {
                    utility_class_User.GetType().GetProperties()[i].SetValue(utility_class_User, IdInUseTable);
                }
            }

            return(utility_class_User);
        }
        public void Update(T poco, string userName, string password)
        {
            SetAnotherDAOInstance(typeof(Utility_class_User));
            var poco2 = base.Get((long)poco.GetType().GetProperty("ID").GetValue(poco));
            Utility_class_User user = _currentUserDAOMSSQL.GetUserByIdentifier(poco2);

            user.USER_NAME = userName;
            user.PASSWORD  = password;
            _currentUserDAOMSSQL.Update(user);
            var user2 = _currentUserDAOMSSQL.Get(user.ID);

            if (Statics.ComparsionByEveryPropertyEquals(user, user2))
            {
                throw new RecentlyUpdatedRecordDidntChangedException <Utility_class_User>(user);
            }

            typeof(T).GetProperty("USER_ID").SetValue(poco, user.ID);
            base.Update(poco);
            var poco3 = Get((long)typeof(T).GetProperty("ID").GetValue(poco));

            if (Statics.ComparsionByEveryPropertyEquals <T>(poco3, poco2))
            {
                throw new RecentlyUpdatedRecordDidntChangedException <T>(poco3);
            }
        }