게임에서 DB에 존재하는 아이템을 삭제할 때 진짜 Remove를 통해 삭제를 하는 것이 아닌, bool 프로퍼티를 정의하고 삭제되었을 경우 true로 세팅하는 식으로 구현한다.
protected override void OnModelCreating(ModelBuilder builder)
{
// 앞으로 Item Entity에 접근할 때 항상 사용되는 모델 레벨(Item)의 필터링
// SoftDeleted가 true인 경우도 체크하고 싶을 때 (필터를 무시하고 싶으면) IgnoreQueryFilters 옵션 추가
builder.Entity<Item>().HasQueryFilter(i => i.SoftDeleted == false);
}
위와 같이 필터링을 해주면 SoftDeletd가 false인 아이템만 출력하게 할 수 있다.
foreach(var item in db.Items.Include(i => i.Owner).ToList())
foreach(var item in db.Items.Include(i => i.Owner).IgnoreQueryFilters().ToList())