LabelLineItem和DespatchPart之间有1对多的关系 我无法理解为什么这种关系会关闭级联删除。
使用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中)测试级联删除时,我在LableLineItem表中收到了一个尝试的FK违规,因为我试图删除一个引用的DespatchPart记录。如果删除已经级联到LabelLineItem表,则不会发生这种情况。