Я делаю пользовательскую авторизацию и для этого сохраняю в контроллере базы данных банка и действие, которое создаю в банке, однако, когда я удаляю действие или контроллер, я не могу удалить его в базе данных автоматически, я был интересно, можно ли сравнить список банков и список контроллеров и действий, и если он не существует в системе, исключить его из базы данных
контроллер и список действий
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++;
}
}
некоторые контроллеры не перечислены и не сохранены в базе данных, поскольку они являются элементами, которые не нуждаются в авторизации. Я благодарю вас за помощь