我在修改子集合然后运行Save时首先使用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?
答案 0 :(得分:0)
TMG。是正确的,除了我还需要设置forign键关系
所以buildingfloors类需要
public class BuildingFloors
{
int id
//forgin key
int Building_Id
}
并且映射需要
modelBuilder.Entity<Model.Building>()
.HasMany(t => t.BuildingFloors)
.WithRequired()
.HasForeignKey(t => t.Building_Id)
.WillCascadeOnDelete(true);