在实体框架中删除子项

时间:2013-04-13 10:34:42

标签: c# entity-framework

在我的数据库模型中,我有4个实体:订单,服务,客户,员工。 他们的关系:

客户0..1 - *订单

订单1 - *服务

员工1 - *服务。

我尝试删除特定订单中的所有服务,但是我收到InvalidOperationException: 操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为foreign-key属性分配另一个非空值,或者必须删除不相关的对象。

这是我的代码:

        public static void ClearSevicesInOrder(int orderId)
        {
            using (DbEntities context = new DbEntities())
            {
                var o = context.Orders.Find(orderId);
                o.Services.Clear();
                context.SaveChanges();
            }
        }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我做了一篇关于此的博客文章,并提供了一个可能的解决方案。 http://wimpool.nl/blog/DotNet/extending-entity-framework-4-with-parentvalidator

简而言之:要使其工作,您必须删除服务列表中的每项服务