Entity framework 为什么此关系默认情况下不启用“级联删除”?

Entity framework 为什么此关系默认情况下不启用“级联删除”?,entity-framework,asp.net-mvc-3,entity-framework-4.3.1,Entity Framework,Asp.net Mvc 3,Entity Framework 4.3.1,我在LabelLineItem和DispatchPart之间有一对多的关系。 我不明白为什么这段关系的级联删除是关闭的 在使用fluent API的上下文中没有定义任何关系。 DispatchPart中没有LabelLineItems导航集合,因此没有对LabelLineItem的引用 public class LabelLineItem { public int Id { get; set; } public int DespatchPartId { get; set; }

我在LabelLineItem和DispatchPart之间有一对多的关系。 我不明白为什么这段关系的级联删除是关闭的

在使用fluent API的上下文中没有定义任何关系。 DispatchPart中没有LabelLineItems导航集合,因此没有对LabelLineItem的引用

public class LabelLineItem
{
    public int Id { get; set; }
    public int DespatchPartId { get; set; }
    public int LabelConfigId { get; set; }
    public string Content { get; set; }

    // Navigation
    public virtual LabelConfig LabelConfig { get; set; }
    public virtual DespatchPart DespatchPart { get; set; }
}

public class DespatchPart 
{
    public int Id { get; set; }
    public int DespatchId { get; set; }

    // Navigation
    public virtual Despatch Despatch { get; set; }

    //...
}
我的理解是,一对多关系默认为级联删除。如上面的代码示例所示

而零或一对多关系默认为级联删除,如果出现以下情况之一: -DispatchPartId已声明为int?, -fluent API将该关系声明为可选关系,即dispatchPart.HasManyp=>p.LabelLineItems.WithOptionali=>i.dispatchPart

但这两种情况都不是,这就是为什么我感到困惑的原因

供参考-
我确信级联已关闭,因为当我通过在SQLManagementStudio中删除Dispatch part记录来测试级联删除时,我在尝试删除引用的Dispatch part记录时,在LabelineItem表中收到一个尝试FK冲突。如果删除已经级联到LabelInIt项表,这就不会发生。

我们需要了解更多关于DePtPayPoT类的内容。您可以把它看作是一个空的类,因为它没有引用到这个实体。您确信,您有最新的迁移代码吗?您确定您的db模型不包含DispatchPart_Id列吗?您好-谢谢您的评论。不,在基础数据库表中没有自动添加的nullable DispatchPart_id字段。按照惯例,它发现并使用声明的DispatchPartId属性。然而,这是一个非常好的观点,看看迁移类!一位开发人员实现了这一点。我现在强烈怀疑他手动编辑了迁移类以禁用级联删除,而不是像我们通常使用的那样使用fluent API。除非有另一个合理的解释——目前看来不太可能——我想我必须假设情况就是这样。