从多个表中删除记录时出错

时间:2019-02-15 13:32:23

标签: c# asp.net asp.net-mvc

我在此页面上尝试删除记录。但是,当我尝试删除一条记录时,出现错误“ ”,该操作失败:无法更改该关系,因为一个或多个外键属性不可为空。对关系进行更改时,相关外键属性设置为空值。如果外键不支持空值,则必须定义新的关系,外键属性必须分配另一个非空值,或者不相关的对象必须删除。

实体:

    public partial class ParentTable
{

    public int p_id { get; set; }
    public string p_titl { get; set; }
    public string p_subtitle { get; set; }
    public string p_message { get; set; }
    public Nullable<System.DateTime> p_date { get; set; }


    public virtual ICollection<ChildTable> childtable { get; set; }
}
public partial class ChildTable
{
    public long id { get; set; }
    public int p_id { get; set; }
    public string message { get; set; }


    public virtual ParentTable parenttable { get; set; }
}

删除代码:

        public ActionResult Delete(int id)
    {            
            var deleteall = _db.ParentTable.Include(p => p.ChildTable).FirstOrDefault(p => p.p_id == id);
            _db.ParentTable.Remove(deleteall);          
            _db.SaveChanges();
             return RedirectToAction("Index");
    }

1 个答案:

答案 0 :(得分:0)

您需要删除ChildTable之前的_db.SaveChanges()个项目

var childItems = _db.ChildTable.Where(c => c.p_id == id);
_db.ChildTable.RemoveRange(childItems );