2010-10-07 146 views
1

使用帶有活動記錄的ASP MVC。ASP MVC只刪除2個表之間的關係(多對多關係)

Ive得到了2桌與有時是相關的,有時是不記錄。該關係由用戶定義。 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

這實際上與MVC有什麼關係? – 2010-10-08 08:05:28

回答

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