在我必须面对的数据架构中,没有删除。相反,所有记录都有一个可为空的 datetime2 ,表示该记录已被“禁用”。这意味着,在直接选择实体的情况下,我始终必须添加检查以查看实体是否已禁用。
到目前为止,我想出的只是一个名为 .Enabled()
的简单扩展方法,它仅获取启用的行。到目前为止似乎很有效,但我必须在每种情况下都输入它,这也很烦人。
肯定有人以前剥过这只猫的皮。有没有更好的方法可以使用我不知道的 Entity Framework 来做到这一点?
最佳答案
我想你可以做这样的事情
public class MyContext : DbContext
{
public IDbSet<Thing> Things { get; set; }
public IQueryable<Thing> EnabledThings
{
get
{
return Things.Where(t => t.Enabled);
}
}
}
或与扩展方法相同(但在上下文中不是 DbSet/queriable)。
就个人而言,在实践中,我实际上完全按照您在示例中的方式进行操作,并使用 Things.Enabled().Whatever
关于c# - Entity Framework 代码优先 : Is there a way to automatically filter disabled rows from DbSets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15047836/