C# 在DbSet中创建预过滤层
我想使用一个名为Deleted的字段来保护我的实体,以防止客户端真正删除任何实体。如果他尝试删除,唯一的问题是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
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在这里的解释: