Jus*_*tin 6 c# entity-framework-4 ef-code-first entity-framework-4.3
删除多对多关系中的记录时,关系表具有孤立记录.我在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");
});
}
Run Code Online (Sandbox Code Playgroud)
我的所有者模型有虚拟财产汽车:
public virtual ICollection<Car> Cars { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的汽车模型有虚拟财产所有者:
public virtual ICollection<Owner> Owners { get; set; }
Run Code Online (Sandbox Code Playgroud)
我按如下方式删除了一辆车(db是我的DbContext,car是Car模型).
db.Cars.Remove(car);
db.SaveChanges()
Run Code Online (Sandbox Code Playgroud)
当我删除Car时,我期望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
Run Code Online (Sandbox Code Playgroud)
注意:如果要向包含数据的现有表添加约束,则必须确保首先删除孤立记录...否则将会ADD CONSTRAINT失败。
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |