c# - Entity Framework 代码优先 : Is there a way to automatically filter disabled rows from DbSets?

标签 c# entity-framework entity-framework-5

在我必须面对的数据架构中,没有删除。相反,所有记录都有一个可为空的 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/

相关文章:

c# - 可选参数无法正常工作

c# - 导航属性 'UId' 不是类型 'Users' 的声明属性

c# - 谁有 C# 示例显示所有者绘制的具有热跟踪效果的 tabcontrol?

c# - Linq 到实体。空引用异常

c# - 优惠券代码生成

Asp.net 成员资格表 : aspnet_UsersInRoles not showing up in Enity Framework designer

c# - Newtonsoft.Json 用下划线替换空格 C# to JSON Serialize

c# - ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法使用相同的键跟踪多个对象

c# - Entity Framework 代码优先一对零关系

c# - 在 Entity Framework 中获取数据