DBContext 类是
public class VGDB : DbContext
{
public DbSet<Planet> Planets { get; set; }
}
模型看起来像:
public class Planet
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
...
public List<Building> Constructions { get; set; }
}
public class Building
{
[Key]
public int Id { get; set; }
public decimal Lvl { get; set; }
public string Type { get; set; }
}
存储库类:
public class VGDBRepository
{
private readonly VGDB _vgdb;
...
public void RemovePlanets()
{
foreach (Planet planet in _vgdb.Planets)
{
_vgdb.Planets.Remove(planet);
}
_vgdb.SaveChanges();
}
...
}
实体框架使用两个表创建数据库:Planets
和Buildings
,按Planet_Id
字段相关。当我调用RemovePlanets()
我的VGDBRepository
类的方法时,它会从行星表中删除行星记录,并将Planet_Id
建筑物表中与已删除行星相关的所有建筑物的字段设置为 null 但不删除它们,因此我在数据库中有冗余记录。我使用code-first
策略来创建数据库。如何强制实体框架删除此类相关数据???