【发布时间】:2018-05-27 22:24:36
【问题描述】:
假设我有一个具有一对多关系的类别和产品实体,当我删除类别时,我想删除属于该类别的所有产品。通过删除,我的意思是将 IsDeleted 标志设置为 true,因为我不想真正删除它(我可以通过在删除级联上指定)。我找到了在删除 Category 时将 IsDeleted 设置为 true 的方法,但是我不知道如何找到该类别的产品并为它们做同样的事情。有什么帮助吗?
public override int SaveChanges()
{
ChangeTracker.DetectChanges();
foreach(var item in ChangeTracker.Entries<Category>().Where(e => e.State == EntityState.Deleted))
{
item.State = EntityState.Modified;
item.CurrentValues["IsDeleted"] = true;
}
return base.SaveChanges();
}
我还指定了查询过滤器,这样我就不会得到删除的项目
builder.Entity<Category>().Property<bool>("IsDeleted");
builder.HasQueryFilter(c => !EF.Property<bool>(c, "IsDeleted"));
【问题讨论】:
-
我认为 Category 实体具有 Products 命名属性,您可以从中获取属于该类别的产品列表。
标签: entity-framework entity-framework-6 entity-framework-core