实体框架Core cascase软删除不起作用

时间:2019-09-12 18:00:02

标签: entity-framework .net-core entity-framework-core

我已经在我的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;
                }
            }

0 个答案:

没有答案