Как проверить таблицу базы данных и список контроллеров и действий в C # - PullRequest
0 голосов
/ 07 апреля 2020

Я делаю пользовательскую авторизацию и для этого сохраняю в контроллере базы данных банка и действие, которое создаю в банке, однако, когда я удаляю действие или контроллер, я не могу удалить его в базе данных автоматически, я был интересно, можно ли сравнить список банков и список контроллеров и действий, и если он не существует в системе, исключить его из базы данных

контроллер и список действий

public static void CheckDeleteControllersAndActions(ApplicationDbContext db)
{

    var menus = db.Menus.ToList();

    Assembly asm = Assembly.GetAssembly(typeof(mia.MvcApplication));

    var controlleractionlist = asm.GetTypes()
            .Where(type => typeof(System.Web.Mvc.Controller).IsAssignableFrom(type))
            .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
            .Where(m => !m.GetCustomAttributes(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any())
            .Select(x => new { Controller = x.DeclaringType.Name, Action = x.Name, ReturnType = x.ReturnType.Name, Attributes = String.Join(",", x.GetCustomAttributes().Select(a => a.GetType().Name.Replace("Attribute", ""))) })
            .OrderBy(x => x.Controller).ThenBy(x => x.Action).ToList();

    int i = 0;

    while (i < controlleractionlist.Count)
    {
        var toCheckController = controlleractionlist[i].Controller.Replace("Controller", string.Empty);

        if (!toCheckController.Contains("Home") && !toCheckController.Contains("Sweet") &&
            !toCheckController.Contains("Conta") && !toCheckController.Contains("Menus") &&
            !toCheckController.Contains("Campanhas") && !toCheckController.Contains("CheckStatusMia") &&
            !toCheckController.Contains("Clientes") && !toCheckController.Contains("Contratos") &&
            !toCheckController.Contains("LeadLoversLogs") && !toCheckController.Contains("Listas") &&
            !toCheckController.Contains("LogClientesParaExcluirs") && !toCheckController.Contains("LogFinanceiro") &&
            !toCheckController.Contains("Nfe_Omie") && !toCheckController.Contains("NFEs") && !toCheckController.Contains("NFSEs") &&
            !toCheckController.Contains("Pedidoes") && !toCheckController.Contains("Produtos_Servicos") &&
            !toCheckController.Contains("Servicoes") && !toCheckController.Contains("Colaborador") &&
            !toCheckController.Contains("Error") && !toCheckController.Contains("OportunidadeEstagio"))
        {
            var toCheckAction = controlleractionlist[i].Action;

            if (!controlleractionlist[i].Action.Equals("SelectEmpresas") &&
                !controlleractionlist[i].Action.Equals("CalculaComissao") &&
                !controlleractionlist[i].Action.Equals("ConfiguraEstimativa") &&
                !controlleractionlist[i].Action.Equals("ConfiguraTaxaVariacao") &&
                !controlleractionlist[i].Action.Equals("ContratosByConsultorId") &&
                !controlleractionlist[i].Action.Equals("SelectPercentOfBusyTime") &&
                !controlleractionlist[i].Action.Equals("FiltroOportunidade") &&
                !controlleractionlist[i].Action.Equals("ContratosByConsultorId") &&
                !controlleractionlist[i].Action.Equals("_PartialTodosChamados") &&
                !controlleractionlist[i].Action.Equals("_PartialOportunidadeTimeline") &&
                !controlleractionlist[i].Action.Equals("_PartialListarFatores") &&
                !controlleractionlist[i].Action.Equals("_PartialPropostaComercial") &&
                !controlleractionlist[i].Action.Equals("ErroPage") &&
                !controlleractionlist[i].Action.Equals("SelectPercentOfBusyTime"))
            {
                foreach(var item in menus)
                {
                    var comparecontroller = string.Compare( toCheckAction, item.Action) == 0;
                }
            }
        }

        i++;

    }

}

некоторые контроллеры не перечислены и не сохранены в базе данных, поскольку они являются элементами, которые не нуждаются в авторизации. Я благодарю вас за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...