ASP MVC仅删除2个表之间的关系(多对多关系)

时间:2010-10-07 10:57:01

标签: sql asp.net-mvc database database-relations

使用ASP MVC和活动记录。

我有两张记录表,有时是相关的,有时则不是。该关系由用户定义。 1个表有项目,另一个有设备。可以创建和删除项目,设备不能。当用户删除项目时,应删除该项目与设备之间的所有关系,但设备应保留。

我该怎么做?

我的删除操作目前看起来像这样:

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 :(得分:0)

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

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