我有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");
}
外键不可为空。
如何做/修复? (帮我制作正确的标题)
答案 0 :(得分:2)
如果您不想通过SQL服务器执行此操作,则必须加载db context
中的所有子对象并删除它们。
答案 1 :(得分:1)
当.Net或EF为您的上下文生成
的代码时.WillCascadeOnDelete()
设置为false,所以只需将其更改为true并尝试它是否有效。
答案 2 :(得分:1)
您的外键应配置为 在删除CASCADE上 在更新CASCADE。