2012-08-17 3 views
0

Disons que je les classes suivantes:LINQ to SQL intégrité référentielle deleteAllOnSubmit

Module 
    { 
     long MID // PK 
     string Name 
    } 

    ModuleBlock 
    { 
     long MID  // FK 
     long BID  // FK 
    } 

    Block 
    { 
     long BID  // PK 
     string Info 
    } 

    BlockLanguage 
    { 
     long BID  // FK 
     long LID  // FK 
    } 

    Language 
    { 
     long LID  // FK 
     string Language 
    } 

ceux-ci sont remplis Imagine des données. Maintenant, je voudrais supprimer un ensemble de blocs. Comment dois-je faire cela? Je dois supprimer les ModuleBlocks et BlockLanguages ​​appropriés.

disons que ceci est la liste du bloc, je voudrais supprimer:

var blocks = // blocks query here 

J'ai probablement appeler:

Context.Blocks.DeleteAllOnSubmit(blocks); 

Mais que dois-je appeler pour vous assurer les données sont également supprimées dans ModuleBlock & BlockLanguage?

Répondre

2

Vous pouvez probablement utiliser les objets associés pour cela.

Context.ModuleBlocks.DeleteAllOnSubmit(blocks.ModuleBlocks); 
Context.BlockLanguages.DeleteAllOnSubmit(blocks.BlockLanguages); 
Context.Blocks.DeleteAllOnSubmit(blocks); 
1

Oui, vous devez supprimer les objets enfants manuellement. Il y a cependant une astuce: Définissez les clés étrangères sur CASCADE dans SQL Server. Il va ensuite supprimer automatiquement les objets associés. C'est la solution la plus rapide et la plus simple.