C# 在DbSet中创建预过滤层

C# 在DbSet中创建预过滤层,c#,entity-framework-5,C#,Entity Framework 5,我想使用一个名为Deleted的字段来保护我的实体,以防止客户端真正删除任何实体。如果他尝试删除,唯一的问题是entity.Deleted=true 问题是,我不想在任何地方包括我需要使用的已删除实体 db.Entities.Where(e=>e.Deleted==false) 我知道我可以在我的控制器中使用这样的方法 private IQueryable<Entity> GetNotDeletedEntity() { return db.Entities.Where

我想使用一个名为Deleted的字段来保护我的实体,以防止客户端真正删除任何实体。如果他尝试删除,唯一的问题是
entity.Deleted=true

问题是,我不想在任何地方包括我需要使用的已删除实体

db.Entities.Where(e=>e.Deleted==false)

我知道我可以在我的控制器中使用这样的方法

private IQueryable<Entity> GetNotDeletedEntity() {
        return db.Entities.Where(e => e.Deleted == false);
}
private IQueryable GetNotDeletedEntity(){
返回db.Entities.Where(e=>e.Deleted==false);
}
对于
getnotdeleteIdentity().WhateverMethod()
,请更改每一个
db.Entities.WhateverMethod()
,但我看起来很奇怪

需要注意的是
GetNotDeletedEntity()
返回IQueryable,而
db.Entities
返回DbSet。这种不一致可能是未来的问题

我认为有一种方法可以扩展DbSet,使其像这样工作

db.Entities//包括所有实体

db.NotDeletedEntities//仅包括实体e.Deleted==false


任何关于如何干燥的建议都将是非常好的。

这家伙似乎也在试图完成类似的事情。看看Jon Skeet在这里的解释: