ASP MVC Удалить только отношение между 2 таблицами (отношение «многие ко многим») - PullRequest
1 голос
/ 07 октября 2010

Использование ASP MVC с активной записью.

У меня есть 2 таблицы с записями, которые иногда связаны, а иногда нет. Отношение определяется пользователем. У одной таблицы есть проекты, у другой - устройства. Проекты могут быть созданы и удалены, устройства не могут. Когда пользователь удаляет проект, все отношения между этим проектом и устройствами должны быть удалены, но устройства должны оставаться.

Как мне это сделать?

мое действие по удалению в настоящее время выглядит так:

public ActionResult Delete(int id, FormCollection collection)
  {
     if (!Project.Exists(id)) return RedirectToAction("Index/1", "Error");

     try
     {
        Project project = Project.Find(id);


        if (project.User.Id != SessionVariables.AuthenticatedUser.Id) return RedirectToAction("Index/1", "Error");

        project.DeleteAndFlush();

        return RedirectToAction("Index", "Project");
     }
     catch(Exception e)
     {
        return RedirectToAction("Index", "Error");
     }
  }

1 Ответ

0 голосов
/ 08 октября 2010

Итак, если я правильно вас понимаю, когда проект удаляется из таблицы проектов, вы хотите удалить все записи в вашей таблице сопоставления устройств проекта?(Я предполагаю, что вы используете связь «многие ко многим» из другого вашего вопроса).

Если это так, я бы рекомендовал вам использовать триггер базы данных, а не пытаться делать это вручную в коде.Вы можете создать триггер, который удаляет все строки для определенного проекта в таблице сопоставления, когда проект удаляется из таблицы проекта.Если вы используете MS SQL что-то вроде:

CREATE TRIGGER trig_deleteProjectDevice
ON projectTable
FOR DELETE
AS
DECLARE @projectID INT
SELECT @projectID = (SELECT projectId FROM Deleted)
DELETE FROM projectDeviceMappingTable WHERE projectId = @projectID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...