使用C#Entity框架6和数据库第一种方法,出于某种原因,如果我直接在Management Studio中删除执行查询的行,则级联删除工作正常,但如果使用代码删除该行则无法正常工作。
我有两个表:Source和Media。 One Media可以有很多来源(.mp4,.avi等)。 在我的数据库中,我想要对源表进行级联删除,因此当删除媒体时,所有带有引用的源也会被删除。
使用SQL Managemend Studio我已经定义了外键关系" FK_Source_Media"使用Cascade删除。 在Visual Studio中,我从数据库更新了以下关系图:
我认为一切都还可以......但是,正如我在帖子开头所说的那样,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,并且不会按预期删除。
为什么会这样?