C# 是否使用实体框架删除链接到SQL Server数据库中另一个数据库表的数据?

C# 是否使用实体框架删除链接到SQL Server数据库中另一个数据库表的数据?,c#,asp.net,sql-server,entity-framework,C#,Asp.net,Sql Server,Entity Framework,我正在尝试从数据库中删除以下行之一: 使用此代码: public ActionResult DeleteRowUsers(int id) { var status = false; var message = ""; using (ConcurrentDBEntities2 db = new ConcurrentDBEntities2()) { var data = db.Companies.Find(id

我正在尝试从数据库中删除以下行之一:

使用此代码:

public ActionResult DeleteRowUsers(int id)
{
        var status = false;
        var message = "";

        using (ConcurrentDBEntities2 db = new ConcurrentDBEntities2())
        {
            var data = db.Companies.Find(id);

            if (data != null)
            {
                db.Companies.Remove(data);
                db.SaveChanges();
                status = true;
            }
            else
            {
                message = "Error!";
            }

            return RedirectToAction("Users");
        }
}
但是,CompanyID链接到另一个表:

当我尝试删除此项时,我得到以下错误:

DELETE语句与引用约束\FK\u apirect\u CompanyID\冲突。数据库\ConcurrentDB\表\dbo.apirects\列“CompanyID”中发生冲突。\r\n语句已终止

我想要实现的是删除第一个表中的整行和其他表中的所有链接项


有人知道如何实现这一点吗?

在扩展DbContext的类中,它应该是这样的:

public class MyContext : DbContext
{
  ...
}
您需要重写OnModelCreating方法,如下所示:

public class MyContext : DbContext
{
  protected override void OnModelCreating(ModelBuilder modelBuilder)
  {
    modelBuilder.Entity<Companies>()
            .HasOne(c => c.CompanyId)
            .WithMany(a => a.ApiRedirects)
            .HasForeignKey(a => a.CompanyId)
            .OnDelete(DeleteBehavior.Cascade);
  }
}

但这可能需要重新创建数据库才能应用此更改。但是,这是您可以在EF中操作DeleteBehavior的方法。

将FK更改为级联删除或在删除Parents之前删除子行。在哪里可以执行此操作?