使用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");
}
}
答案 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