【发布时间】:2016-06-23 23:36:44
【问题描述】:
我在修改子集合然后运行保存时首先使用 EF6 代码,保存运行但 Db 行没有被删除,只是将外键设置为 null。
基本模型
public class Building
{
int Id {get;set;}
ICollection<BuildingFloors> BuildingFloors
}
public class BuildingFloors
{
int id
}
我在 DBContext 中设置级联,例如
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Model.Building>()
.HasMany(t => t.BuildingFloors)
.WithOptional(d => d.Building)
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
然后在保存集合时,我正在清除当前列表。
building.BuildingFloors.Clear();
然后重新添加新值。
foreach(var floor in FloorCollection)
{
building.BuildingFloors.Add(buildingFloor);
}
当对象从集合中删除时,我如何让 EF 从数据库中删除它?
【问题讨论】:
-
你不能。但是如果你从 dbcontext 中删除对象,它也会从集合中删除。
-
顺便说一句。如果您将关系更改为一对多而不是零/一对多,它将开箱即用。
-
你能解释一下我该怎么做吗?
-
您可以通过将“.WithOptional(d => d.Building)”替换为“.WithRequired(d => d.Building)”来做到这一点。如果 BuildingFloor 不能在没有 Building 的情况下存在,您应该进行此更改。
标签: c# entity-framework entity-framework-6