1つ以上のリレーションシップを持つカテゴリと商品のエンティティがあり、カテゴリを削除すると、そのカテゴリに属するすべての商品を削除したいとします。私は実際にそれを削除したくないので、削除することによって、IsDeletedフラグをtrueに設定することを意味します(削除カスケードで指定することで可能です)。カテゴリが削除されたときにIsDeletedをtrueに設定する方法を見つけましたが、そのカテゴリの商品を見つけて同じことをする方法を見つけることができません。どんな助け?EFコアの1対多のリレーションシップをソフトに削除する方法は?
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"));
カテゴリエンティティには、そのカテゴリに属している製品のリストが表示されます。 –