无法执行Entity Framework Core 3.1中的级联删除功能

问题描述

我正在尝试执行Cascade删除,但是它不起作用。

我的实体和数据库上下文是:

public class City
{
    public int Id { get; set; }

    public string Name { get; set; }

    public int FKCountry { get; set; }

    public Country Country { get; set; }
}

public class Country
{
    public int Id { get; set; }

    public string Name { get; set; }

    public ICollection<City> City { get; set; }
}

public class CompanyContext : DbContext
{
    public DbSet<City> City { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UsesqlServer(@"Server=vaio;Database=Company;Trusted_Connection=True;");
        }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //Write Fluent API configurations here

        modelBuilder.Entity<City>()
                    .HasOne(e => e.Country)
                    .WithMany(e => e.City)
                    .OnDelete(DeleteBehavior.ClientCascade)
                    .HasForeignKey(e => e.FKCountry);
    }
}

请注意,我已使用以下代码应用级联删除

.OnDelete(DeleteBehavior.ClientCascade)

使用控制器中的代码,我将删除ID为1和2的城市。

List<City> dept = new List<City>()
{
    new City(){Id=1},new City(){Id=2}
};

using (var context = new CompanyContext())
{
    context.RemoveRange(dept);
    await context.SaveChangesAsync();
}

城市将被删除,但相应的国家记录(应根据级联删除将其删除)不会被删除。为什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)