删除外表中的数据时删除外键数据

时间:2016-07-06 20:31:31

标签: asp.net-mvc linq linq-to-entities entity-framework-6 ado.net-entity-data-model

我有2个数据库表,我想删除外键所在的表中的数据(主键所在的位置),指向该数据的外键也会被删除。

    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> DeleteConfirmed(int id)
    {

        Report report = await db.Reports
            .Include(i => i.RepFilters)
            .Where(i => i.ID == id).SingleAsync();

        db.Reports.Remove(report);

        await db.SaveChangesAsync();
        return RedirectToAction("Index");
    }

外键不可为空。

enter image description here (我得到的错误)

如何做/修复? (帮我制作正确的标题)

3 个答案:

答案 0 :(得分:2)

如果您不想通过SQL服务器执行此操作,则必须加载db context中的所有子对象并删除它们。

答案 1 :(得分:1)

当.Net或EF为您的上下文生成

的代码时
.WillCascadeOnDelete()

设置为false,所以只需将其更改为true并尝试它是否有效。

答案 2 :(得分:1)

您的外键应配置为     在删除CASCADE上     在更新CASCADE。