Я использую Entity Framework Code First. Я переопределяю SaveChanges
в DbContext
, чтобы разрешить "мягкое удаление":
if (item.State == EntityState.Deleted && typeof(ISoftDelete).IsAssignableFrom(type))
{
item.State = EntityState.Modified;
item.Entity.GetType().GetMethod("Delete")
.Invoke(item.Entity, null);
continue;
}
Это здорово, поэтому объект знает, как отмечать себя как мягкое удаление (в этом случае он просто устанавливает IsDeleted
в true
).
Мой вопрос в том, как я могу сделать так, что когда я получаю объект, он игнорирует любой с помощью IsDeleted
? Поэтому, если бы я сказал _db.Users.FirstOrDefault(UserId == id)
, если у этого пользователя был IsDeleted == true
, он проигнорировал бы его. По сути, я хочу фильтровать?
Примечание. Я не хочу просто поставить && IsDeleted == true
Вот почему я отмечаю классы интерфейсом, поэтому remove знает, как "Just Work", и я хотел бы каким-то образом изменить поиск, чтобы узнать, как "Just Work" также основан на этом интерфейсе.