[英]How do you delete Child from Parent entities in EF Core?
我有这些课
public class HomeSection2
{
public HomeSection2()
{
HomeSection2Detail = new List<HomeSection2Detail>();
}
public Guid ID { get; set; }
public string Title { get; set; }
public string Header { get; set; }
public virtual List<HomeSection2Detail> HomeSection2Detail { get; set; }
}
public class HomeSection2Detail
{
public Guid ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Link { get; set; }
public int? Sequence { get; set; }
public virtual HomeSection2 HomeSection2 { get; set; }
}
当我打电话
var obj2detail = obj2.HomeSection2Detail.Where(w => w.ID == detail.ID).FirstOrDefault();
if (obj2detail != null)
{
obj2.HomeSection2Detail.Remove(obj2detail);
}
从我的应用程序中,它只会删除关系而不是数据库中的记录。
您需要从HomeSection2Details
DbSet 中明确删除实体。
dbContext.HomeSection2Details.Remove(obj2detail);
您需要执行以下操作。 在代码段中作为注释添加的解释:
var obj2detail = obj2.HomeSection2Detail.Where(w => w.ID == detail.ID).FirstOrDefault();
if (obj2detail != null)
{
// this line of code only delete the relationship.
obj2.HomeSection2Detail.Remove(obj2detail);
// If you want to delete the entity you need the DbContext help
// and your HomeSection2Details DbSet<HomeSection2Detail> like below
yourDbContext.HomeSection2Details.Remove(obj2detail);
}
无需从DbContext
显式删除依赖实体; 如果从其主体实体中删除依赖实体时应始终删除它,则可以通过使用OnDelete
在DbContext
上进行配置来实现:
protected override void OnModelCreating(ModelBuilder builder)
{
builder
.Entity<HomeSection2>()
.HasMany(x => x.HomeSection2Detail)
.WithOne(x => x.HomeSection2)
.OnDelete(DeleteBehavior.Cascade); // Causes dependent entity to be deleted
}
您直接从 RemoveRange 或 Remove DbContext 使用
_db.RemoveRange(obj2detail);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.