Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架代码优先:有没有一种方法可以自动从数据库集中过滤禁用的行?_C#_Entity Framework_Entity Framework 5 - Fatal编程技术网

C# 实体框架代码优先:有没有一种方法可以自动从数据库集中过滤禁用的行?

C# 实体框架代码优先:有没有一种方法可以自动从数据库集中过滤禁用的行?,c#,entity-framework,entity-framework-5,C#,Entity Framework,Entity Framework 5,在我必须面对的数据体系结构中,没有删除。相反,所有记录都有一个可为空的datetime2,表示该记录已被“禁用”。这意味着在直接选择实体的情况下,我必须始终添加一个检查来查看实体是否被禁用 到目前为止,我想到的只是一个名为.Enabled()的简单扩展方法,它只获取已启用的行。到目前为止,它似乎很有效,但我在每种情况下都必须输入它,这也很烦人 肯定以前有人剥过这只猫的皮。有没有更好的方法可以使用我并不熟悉的Entity Framework来实现这一点?我不知道Entity Framework的原

在我必须面对的数据体系结构中,没有删除。相反,所有记录都有一个可为空的datetime2,表示该记录已被“禁用”。这意味着在直接选择实体的情况下,我必须始终添加一个检查来查看实体是否被禁用

到目前为止,我想到的只是一个名为
.Enabled()
的简单扩展方法,它只获取已启用的行。到目前为止,它似乎很有效,但我在每种情况下都必须输入它,这也很烦人


肯定以前有人剥过这只猫的皮。有没有更好的方法可以使用我并不熟悉的Entity Framework来实现这一点?

我不知道Entity Framework的原生功能。但通常当我遇到这个问题时,我会创建一个“存储库”层,运行大多数数据库事务。然后我创建了一些方法,比如
GetAll()
,它返回所有项目,并使用适当的where语句隐藏“已删除”的项目。

我想您可以这样做

public class MyContext : DbContext
{
    public IDbSet<Thing> Things { get; set; }
    public IQueryable<Thing> EnabledThings
    {
        get
        {
            return Things.Where(t => t.Enabled);
        }
    }
}
公共类MyContext:DbContext
{
公共IDbSet对象{get;set;}
公共IQueryable启用项
{
得到
{
返回东西,其中(t=>t.Enabled);
}
}
}
或者与扩展方法相同(但在上下文中不是DbSet/queryable)


就我个人而言,在实践中,我实际上完全按照您在示例中所做的那样,使用
Things.Enabled()。无论什么

是的,我想我会坚持我所拥有的。我只是希望会有这样的人,“哦,是的,你只需要实现强大,翻转这个Wiffle位和这个华夫格位,还有bango!你得到了你需要的…”。。。谢谢