[英]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.