如何解决无法执行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 举报,一经查实,本站将立刻删除。