我已经在我的API中实现了软删除。我有两个表ServiceCategory和Service。 ServiceCategory可以具有多个服务。但是Service只能属于一个ServiceCategory。 以下是我如何配置关系以允许级联删除
modelBuilder.Entity<ServiceCategory>()
.HasMany(x => x.Services)
.WithOne(y => y.ServiceCategory)
.IsRequired()
.OnDelete(DeleteBehavior.Cascade);
在API中,这是我如何删除
var serviceCategory = UnitOfWork.DbContext.ServiceCategory.Include("Services")
.FirstOrDefault(x => x.Id == id);
UnitOfWork.DbContext.ServiceCategory.Remove(serviceCategory);
UnitOfWork.DbContext.SaveChanges();
我确保我将相关实体加载到上下文中以允许级联删除,但是级联删除仍然对我不起作用。 我在我的SaveChanges()中放置了一个断点,在该处已实现了softdelete,发现子实体的entry.State保持不变。我在做什么错了?
if (IsDeleteAllowed(entry.Entity))
{
switch (entry.State)
{
case EntityState.Added:
entry.CurrentValues["IsDeleted"] = false;
break;
case EntityState.Deleted:
entry.State = EntityState.Modified;
entry.CurrentValues["IsDeleted"] = true;
break;
}
}