Entity Framework Cascade在多个条件下删除



存在这个实体:

public class Basket
{
public int Id{ get; set; }
[ForeignKey("Apple")]
public int AppleId { get; set; }
public Apple Apple { get; set; }
[ForeignKey("Banana")]
public int BananaId { get; set; }
public Banana Banana { get; set; }
[ForeignKey("Cherry")]
public int CherryId { get; set; }
public Cherry Cherry { get; set; }           
}

我这样命名它们只是为了给出一个具体的例子。

在"basket"表,我将有4个不同的列,其中3个将是"苹果","香蕉","香蕉"的id。和";cherry"。我想设置一个级联DELETE条件,如果要删除这3个中的一个,那么必须包含该ID的行。

到目前为止,我还不能完成它,因为"苹果";香蕉"one_answers";cherry"不会包含"basket"的ID。

谢谢。

你描述的是一个实体,它是" many ";三个标准一对多关系的结束。

在EF Core的fluent API中:

modelBuilder.Entity<Basket>()
.HasOne(b => b.Apple).WithMany().HasForeignKey(b => b.AppleId)
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Basket>()
.HasOne(b => b.Banana).WithMany().HasForeignKey(b => b.BananaId)
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Basket>()
.HasOne(b => b.Cherry).WithMany().HasForeignKey(b => b.CherryId)
.OnDelete(DeleteBehavior.Cascade);

Cascade Delete - EF Core | Microsoft Docs

最新更新