我在 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 表,则不会发生这种情况。