/// <summary>
        /// Grant roles to access specific action
        /// </summary>
        /// <param name="action"> Enum (ex: Get,Put,Delete) </param>
        /// <param name="roles"> string of one or more role seperated by ',' as string </param>
        private void SetActionRoles(Actions action, string roles)
        {
            if (AuthorizRole == null)
            {
                AuthorizRole = new GenericAuthorizRoles <T>();
            }
            if (AuthorizRole.ActionRoles == null)
            {
                AuthorizRole.ActionRoles = new List <GenericActionRoles>();
            }
            var actionRoles = AuthorizRole.ActionRoles.Find(x => x.Action == action);

            if (actionRoles == null)
            {
                actionRoles = new GenericActionRoles()
                {
                    Action = action, Roles = roles
                };
                AuthorizRole.ActionRoles.Add(actionRoles);
            }
            else
            {
                actionRoles.Roles = roles;
            }
        }
        /// <summary>
        /// Add constrain in roles when request action
        /// </summary>
        /// <param name="action"> Enum of actions</param>
        /// <param name="roles"> string of one or more role seperated by ',' </param>
        /// <param name="ConstrainsExpression"></param>
        public void AddActionDataConstrains(Actions action, string roles, Expression <Func <T, bool> > ConstrainsExpression)
        {
            if (AuthorizRole == null)
            {
                AuthorizRole = new GenericAuthorizRoles <T>();
            }

            if (AuthorizRole.DataAccess == null)
            {
                AuthorizRole.DataAccess = new List <GenericDataAccess <T> >();
            }
            GenericDataAccess <T> dataAccessRole = new GenericDataAccess <T>()
            {
                Action = action, Roles = roles, ExpressionFunc = ConstrainsExpression
            };

            AuthorizRole.DataAccess.Add(dataAccessRole);
        }