为什么此关系默认情况下没有启用级联删除?

时间:2015-04-01 12:13:35

标签: entity-framework asp.net-mvc-3 entity-framework-4.3.1

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

0 个答案:

没有答案