我想使用名爲Deleted的字段來保護我的實體,以避免客戶端真正刪除任何實體。如果他試圖刪除,唯一的事情是,entity.Deleted = true;
在DbSet中創建預濾波器層
的問題是,無論我不想包含已刪除的實體,我需要使用
db.Entities.Where(e => e.Deleted == false).WhateverMethod();
我知道我可以使用方法是這樣我控制器
private IQueryable<Entity> GetNotDeletedEntity() {
return db.Entities.Where(e => e.Deleted == false);
}
和更改每db.Entities.WhateverMethod()
爲GetNotDeletedEntity().WhateverMethod()
,但我似乎不可思議,我裏面。
需要注意的是GetNotDeletedEntity()
返回IQueryable,並且db.Entities
返回DbSet。這種不一致可能是未來的一個問題。
我認爲有一種方法來擴展DbSet像這樣
db.Entities // include all entities
db.NotDeletedEntities // include only entities e.Deleted == false
關於怎麼幹.Where(e => e.Deleted == false)
將是巨大的任何意見工作。