0

假设我有以下课程:

    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
    }

想象一下这些都充满了数据。现在,我想删除一组块。我该怎么做?我必须删除相应的 ModuleBlocks 和 BlockLanguages。

假设这是我要删除的块列表:

    var blocks = // blocks query here

我可能不得不打电话:

    Context.Blocks.DeleteAllOnSubmit(blocks);

但是我还需要调用什么来确保 ModuleBlock 和 BlockLanguage 中的数据也被删除?

4

2 回答 2

2

您可能可以使用关联的对象来执行此操作。

Context.ModuleBlocks.DeleteAllOnSubmit(blocks.ModuleBlocks);
Context.BlockLanguages.DeleteAllOnSubmit(blocks.BlockLanguages);
Context.Blocks.DeleteAllOnSubmit(blocks);
于 2012-08-17T10:43:58.087 回答
1

是的,您需要手动删除子对象。不过有一个技巧:CASCADE在 SQL Server 中设置外键。然后它将自动删除关联的对象。这是最快和最简单的解决方案。

于 2012-08-17T10:55:58.277 回答