0

我有以下课程:

public class Discount 
{
    public override int Id { get; set; }
    public virtual IList<Region> Regions { get; set; }
}

public class Region
{
    public override int Id { get; set; }
    public int DiscountId { get; set; }
    public virtual Discount Discount { get; set; }
    public int Region { get; set; }
}

当我删除折扣时,我希望它使用以下代码对相关区域进行级联删除:

foreach (var discount in discounts) {
    context.Discounts.Remove(discount);
}

调用context.SaveChanges()时出现以下错误:

DELETE 语句与 REFERENCE 约束“FK_dbo.Region_dbo.Discount_DiscountId”冲突。冲突发生在数据库“Portal”、表“dbo.Region”、列“DiscountId”中。

但是,如果我调试上面的for循环,并且在它从上下文中删除折扣之后,我检查删除的折扣,它显示它有 0 个区域。然后当调用context.SaveChanges()它时!

知道发生了什么,以及在不调试时如何让它工作?

4

1 回答 1

0

好的 - 我刚刚意识到在延迟加载对象时不能进行级联删除,这是有道理的。

于 2013-10-24T15:31:12.353 回答