簡體   English   中英

在多對多關系中刪除實體會使關系表中的孤兒離開

[英]Deleting Entity in Many to Many Relationship Leaves Orphans in Relationship Table

刪除多對多關系中的記錄時,關系表中有孤立記錄。 我在DbContext中建立了以下多對多關系。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<Car>()
     .HasMany(u => u.Owners)
     .WithMany(l => l.Cars)
     .Map(ul =>
     {
       ul.MapLeftKey("CarId");
       ul.MapRightKey("OwnerId");
       ul.ToTable("CarOwners");
     });
}

我的所有者模型具有虛擬屬性Cars:

public virtual ICollection<Car> Cars { get; set; } 

我的汽車模型具有虛擬財產所有者:

public virtual ICollection<Owner> Owners { get; set; } 

我按以下方式刪除Car(db是我的DbContext,car是Car模型)。

db.Cars.Remove(car);
db.SaveChanges()

當我刪除汽車時,我希望具有該CarId的表CarOwners中的所有記錄也將被刪除,但事實並非如此。 有什么建議嗎?

解決方案是:

ALTER TABLE [dbo].[CarOwners]  WITH CHECK ADD  CONSTRAINT [FK_Car_Owners] FOREIGN KEY([CarId])
REFERENCES [dbo].[Car] ([Id])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[CarOwners]  WITH CHECK ADD  CONSTRAINT [FK_Owner_Cars] FOREIGN KEY([OwnerId])
REFERENCES [dbo].[Owner] ([Id])
ON DELETE CASCADE
GO

注意:如果要將約束添加到具有數據的現有表中,則必須確保首先刪除孤立記錄...否則ADD CONSTRAINT將失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM