/// <summary>
        /// Updates a SystemRole record and returns the number of records affected
        /// </summary>
        public static int Update(SystemRoleDO DO)
        {
            SqlParameter _SystemRoleID = new SqlParameter("SystemRoleID", SqlDbType.VarChar);
            SqlParameter _Description = new SqlParameter("Description", SqlDbType.VarChar);
            
            _SystemRoleID.Value = DO.SystemRoleID;
            _Description.Value = DO.Description;
            
            SqlParameter[] _params = new SqlParameter[] {
                _SystemRoleID,
                _Description
            };

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            return DataCommon.ExecuteScalar("[dbo].[SystemRole_Update]", _params, pid);
        }
        /// <summary>
        /// Creates a new SystemRole record using async
        /// </summary>
        public static async Task CreateAsync(SystemRoleDO DO)
        {
            SqlParameter _SystemRoleID = new SqlParameter("SystemRoleID", SqlDbType.VarChar);
            SqlParameter _Description = new SqlParameter("Description", SqlDbType.VarChar);
            
            _SystemRoleID.Value = DO.SystemRoleID;
            _Description.Value = DO.Description;
            
            SqlParameter[] _params = new SqlParameter[] {
                _SystemRoleID,
                _Description
            };

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            await DataCommon.ExecuteNonQueryAsync("[dbo].[SystemRole_Insert]", _params, pid);
            
        }
        /// <summary>
        /// Gets all SystemRole records
        /// </summary>
        public static async Task<SystemRoleDO[]> GetAllAsync()
        {

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            SafeReader sr = await DataCommon.ExecuteSafeReaderAsync("[dbo].[SystemRole_GetAll]", new SqlParameter[] { }, pid);
            
            List<SystemRoleDO> objs = new List<SystemRoleDO>();
            
            while(sr.Read()){

                SystemRoleDO obj = new SystemRoleDO();
                
                obj.SystemRoleID = sr.GetString(sr.GetOrdinal("SystemRoleID"));
                obj.Description = sr.GetString(sr.GetOrdinal("Description"));
                


                objs.Add(obj);
            }

            return objs.ToArray();
        }
        /// <summary>
        /// Selects SystemRole records by PK
        /// </summary>
        public static async Task<SystemRoleDO[]> GetByPKAsync(String SystemRoleID)
        {

            SqlParameter _SystemRoleID = new SqlParameter("SystemRoleID", SqlDbType.VarChar);
			
            _SystemRoleID.Value = SystemRoleID;
			
            SqlParameter[] _params = new SqlParameter[] {
                _SystemRoleID
            };

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            SafeReader sr = await DataCommon.ExecuteSafeReaderAsync("[dbo].[SystemRole_GetByPK]", _params, pid);


            List<SystemRoleDO> objs = new List<SystemRoleDO>();
			
            while(sr.Read())
            {
                SystemRoleDO obj = new SystemRoleDO();
				
                obj.SystemRoleID = sr.GetString(sr.GetOrdinal("SystemRoleID"));
                obj.Description = sr.GetString(sr.GetOrdinal("Description"));
                

                objs.Add(obj);
            }

            return objs.ToArray();
        }
        /// <summary>
        /// Deletes a SystemRole record
        /// </summary>
        public static async Task<int> DeleteAsync(SystemRoleDO DO)
        {
            SqlParameter _SystemRoleID = new SqlParameter("SystemRoleID", SqlDbType.VarChar);
            
            _SystemRoleID.Value = DO.SystemRoleID;
            
            SqlParameter[] _params = new SqlParameter[] {
                _SystemRoleID
            };

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            return await DataCommon.ExecuteScalarAsync("[dbo].[SystemRole_Delete]", _params, pid);
        }