1

使用带有活动记录的 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");
     }
  }
4

1 回答 1

0

因此,如果我理解正确,当从项目表中删除项目时,您想删除项目设备映射表中的所有条目?(我假设您正在使用来自另一个问题的多对多关系)。

如果是这种情况,我建议您使用数据库触发器,而不是尝试在代码中手动执行此操作。当从项目表中删除项目时,您可以创建一个触发器,该触发器会删除映射表中特定项目的所有行。如果您使用的是 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
于 2010-10-08T08:03:58.030 回答