0

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

使用 fluent API 在上下文中没有定义任何关系。DespatchPart 中没有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; }

    //...
}

据我了解,一对多关系默认为级联删除。如上面的代码示例所示。

而零或一对多关系默认为级联删除,如果以下情况发生: - DespatchPartId 被声明为 int?, - 流式 API 将关系声明为可选,即 DespatchPart.HasMany(p => p .LabelLineItems).WithOptional(i => i.DespatchPart)。

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

仅供参考 - 我确定级联已关闭,因为当我通过删除发送部分记录(在 SQLManagementStudio 中)测试级联删除时,当我尝试删除引用的 DespatchPart 记录时,我在 LableLineItem 表中收到了尝试的 FK 违规。如果删除已级联到 LabelLineItem 表,则不会发生这种情况。

4

0 回答 0