2010-10-07 14 views
1

Utilisation d'ASP MVC avec enregistrement actif. J'ai eu 2 tables avec des enregistrements qui sont parfois liés et parfois ne le sont pas. La relation est définie par l'utilisateur. 1 table a des projets, l'autre a des appareils. Les projets peuvent être créés et supprimés, les appareils ne peuvent pas. Lorsqu'un utilisateur supprime un projet, toutes les relations entre ce projet et les périphériques doivent être supprimées, mais les périphériques doivent rester.ASP MVC Supprimer uniquement la relation entre 2 tables (relation plusieurs-à-plusieurs)

Comment faire?

mon action de suppression ressemble actuellement à ceci:

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

Qu'est-ce que cela a réellement à voir avec MVC? –

Répondre

0

Donc, si je vous comprends bien, quand un projet est supprimé de la table des projets que vous souhaitez supprimer toutes les entrées de votre table de mappage de projectdevice? (Je suppose que vous utilisez une relation plusieurs à plusieurs d'une autre de vos questions).

Si c'est le cas, je vous recommande d'utiliser un déclencheur de base de données, plutôt que d'essayer de le faire manuellement dans le code. Vous pouvez créer un déclencheur qui supprime toutes les lignes d'un projet spécifique dans la table de mappage, lorsqu'un projet est supprimé de la table de projet. Si vous utilisez MS SQL quelque chose comme:

CREATE TRIGGER trig_deleteProjectDevice 
ON projectTable 
FOR DELETE 
AS 
DECLARE @projectID INT 
SELECT @projectID = (SELECT projectId FROM Deleted) 
DELETE FROM projectDeviceMappingTable WHERE projectId = @projectID