C#EF6级联删除不起作用

时间:2016-09-14 13:32:51

标签: c# sql entity-framework-6 delete-row

使用C#Entity框架6和数据库第一种方法,出于某种原因,如果我直接在Management Studio中删除执行查询的行,则级联删除工作正常,但如果使用代码删除该行则无法正常工作。

我有两个表:Source和Media。 One Media可以有很多来源(.mp4,.avi等)。 在我的数据库中,我想要对源表进行级联删除,因此当删除媒体时,所有带有引用的源也会被删除。

使用SQL Managemend Studio我已经定义了外键关系" FK_Source_Media"使用Cascade删除。 在Visual Studio中,我从数据库更新了以下关系图:

FK_Media_Source onDelete Cascade

我认为一切都还可以......但是,正如我在帖子开头所说的那样,Source上的级联删除只能执行像

这样的查询
  delete from Media where Id=183

但是执行以下代码以使用EF编程删除一行代码

public void DeleteVMDBEntity(T TObject)
    {            
        specificContext.Attach(TObject);            
        var entry = context.Entry(TObject);
        entry.State = System.Data.Entity.EntityState.Deleted;
        specificContext.SaveChanges();
    }

执行该代码后,Media行被正确删除,但带有MediaId引用的Source只是将MediaId设置为null,并且不会按预期删除。

为什么会这样?

0 个答案:

没有答案