实体框架级联删除配置

时间:2016-11-03 15:06:36

标签: entity-framework

这里是我的模型的两个实体,具有流畅的entityframework配置

Player.cs

public class Player
{
    public string Name { get; set; }
    public virtual Statistics Statistics { get; set; }

}

Statistics.cs

public class Statistics
    {
        public int GamePlayed { get; set; }
        public int Assists { get; set; }
        public int Goals { get; set; }
    }

DbContextClass

modelBuilder.Entity<Player>()
            .HasOptional(x => x.Statistics)
            .WithMany()
            .Map(x => x.MapKey("StatisticsId"));

最后,在我的播放器表上创建一个名为'StatisticsId'的foreignKey即可。我想要一个玩家删除,cascadeDelete相关的统计数据。这是我的问题,将WillCascadeDelete添加到我的语句

    modelBuilder.Entity<Player>()
                .HasOptional(x => x.Statistics)
                .WithMany()
                .Map(x => x.MapKey("StatisticsId"))
                .WillCascadeOnDelete(true);

在删除统计信息时删除播放器。如何通过将StatisticsId foreignKey保留在播放器表上来使这项工作相反?

这里的要点是Statistics可以'独自生活',而不会有Player相关。是否可以将实体框架设置为自动删除相关的Statistics,或者这必须手动完成?

1 个答案:

答案 0 :(得分:-1)

我假设您只需要将WillCascadeOnDelete添加到Statistics

modelBuilder.Entity<Statistics>()
            .WillCascadeOnDelete(true);

我还没有测试过。