Entity framework 实体框架删除非空外键行

Entity framework 实体框架删除非空外键行,entity-framework,Entity Framework,我有一个类似于标准产品/订单详细信息/订单设置的模式。我想删除单个产品并级联删除引用该产品的所有OrderDetails 假设我已经从业务规则的角度考虑了这一点,那么使用Entity Framework 4处理这一问题最优雅的方式是什么?第一件事是第一件事: 是否有任何原因导致数据库级别的删除级联无效 如果确实不可能,您可以尝试以下方法: 由于ObjectContext没有DeleteAll样式的方法,因此您可以始终实现自己的: public static void DeleteAll(this

我有一个类似于标准产品/订单详细信息/订单设置的模式。我想删除单个产品并级联删除引用该产品的所有OrderDetails


假设我已经从业务规则的角度考虑了这一点,那么使用Entity Framework 4处理这一问题最优雅的方式是什么?

第一件事是第一件事:

是否有任何原因导致数据库级别的删除级联无效

如果确实不可能,您可以尝试以下方法:

由于
ObjectContext
没有
DeleteAll
样式的方法,因此您可以始终实现自己的:

public static void DeleteAll(this ObjectContext context, 
    IEnumerable<Object> records)
{
    foreach(Object record in records)
    {
        context.DeleteObject(record);
    }
}
或者,稍微干净一点:

var toDelete = context.OrderDetails.Where(od => od.Product == product);

context.DeleteAll(toDelete);

有什么理由你不能在db中删除级联吗?我尝试不这样做是因为其他原因,但我同意这是最好的答案,如果可能的话。你在评论中的想法比你的答案更清晰。:)EF应该注意到级联和“公正工作”。@Craig我只是发布了答案,因为我的评论没有得到任何回应。我会更新我的帖子。谢谢-如果可能的话,我认为在删除级联上使用的编辑,否则手动删除级联关系可以很好地总结这一点。
var toDelete = context.OrderDetails.Where(od => od.Product == product);

context.DeleteAll(toDelete);