ASP. NET: - удаление записей из двух таблиц с использованием одного представления - PullRequest
0 голосов
/ 14 февраля 2020

Я хочу удалить данные из 2 таблиц. Я использую Entity Framework.

Вот класс.

[HttpPost]
        public ActionResult Delete(int employeeId)
        {
            int id = employeeId;
            MvcWebApp.DbModel.profile profile = dbContext.profiles.Find(employeeId);
            dbContext.profiles.Remove(profile);
            dbContext.SaveChanges();
            regi regi = dbContext.regis.Find(id);
            dbContext.regis.Remove(regi);
            dbContext.SaveChanges();
            return RedirectToAction("Index");
        }

Где employeeId - имя столбца дочерней таблицы, а Id - имя столбца родительской таблицы.

MvcWebApp.DbModel.profile Это полностью определенное имя класса.

Я получаю profile объект null.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Необходимо включить дочернюю таблицу в родительский объект.

 [HttpPost]
         public ActionResult Delete(int id)
         {
            var parent = dbContext.regis.Include(p => p.profiles).SingleOrDefault(p => p.id == id);
            foreach(var child in parent.profiles.ToList())
            {
                dbContext.profiles.Remove(child);
                dbContext.SaveChanges();
            }
             return RedirectToAction("Index");
         }
0 голосов
/ 15 февраля 2020

Мое предложение будет первым, проверьте, есть ли у вас сотрудник с идентификатором, который вы указали, или нет, это проще всего, я полагаю, НЕ ДОЛЖНО быть! как вы говорите, он возвращает ноль. Вы получаете этот NULL для ВСЕХ входов?

Во-вторых, попробуйте запустить свой код в режиме отладчика, поставьте точку останова в первой строке, чтобы увидеть, какой EmployeeId отправляется в метод. проверьте, что это может быть ноль, поэтому проблема в вашем методе POST

...