当从集合中删除对象时,如何让EF6从数据库中删除对象?

时间:2016-06-23 12:07:15

标签: c# entity-framework entity-framework-6

我在修改子集合然后运行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?

1 个答案:

答案 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);