代码优先 - 将级联规则设置为一对多关系中的“设置空”

时间:2012-11-22 01:54:41

标签: entity-framework entity-framework-4.1 ef-code-first

我想知道如何设置一对多关系,其中Cascade规则“Set Null”。这是我正在使用的两个实体。 StandradRelay与RelayConfig有一对多的关系。

public class StandardRelay {
    ...
    public virtual ICollection<RelayConfig> RelayConfigs { get; set; }
}

public class RelayConfig  {
    ...
    public virtual StandardRelay StandardRelay { get; set; }
}

默认情况下,上述代码会导致“无操作”的级联规则。所以我尝试使用DbModelBuilder和以下流畅的API。

modelBuilder.Entity<StandardRelay>()
            .HasMany<RelayConfig>(s => s.RelayConfigs)
            .WithOptional(r => r.StandardRelay)
            .WillCascadeOnDelete(false);

这再次导致“无行动”的级联规则。然后我尝试了以下

        modelBuilder.Entity<StandardRelay>()
                    .HasMany<RelayConfig>(s => s.RelayConfigs)
                    .WithOptional(r => r.StandardRelay)
                    .WillCascadeOnDelete(true);

这导致“删除”的级联规则

所以简而言之,我没有看到任何设置“Set Null”的级联规则的选项。我们如何配置相同的?

1 个答案:

答案 0 :(得分:1)

这是不可能的。

你必须手动处理它。