有没有办法向Entity Framework层添加过滤器以排除“IsArchived”记录?

时间:2013-08-27 09:47:56

标签: asp.net-mvc-3 entity-framework entity-framework-4 entity-framework-5

我有记录标记为“IsArchived”。我正在寻找一种从当前的MVC3 / EF3 Web应用程序中排除这些记录的权宜之计。

有没有办法在EF图层中添加某种“IsArchived”过滤器。在我的例子中,我有一个单独的Model项目,其中表/视图表示为POCO实体,以及CSDL和SSDL文件中包含的映射。

非常感谢您的帮助。

编辑:

我使用的是“ObjectContext”而不是“DbContext”,主要是因为我正在使用的数据建模工具。此工具可创建上下文和POCO文件。

我想知道是否可以编辑此上下文文件,如下所示:

    public ObjectSet<StdOrg> StdOrg
    {
        get
        {
            if ((_StdOrg == null))
            {
                _StdOrg = base.CreateObjectSet<StdOrg>("StdOrg");
                // new line below. Got cast error tween both sides.
                _StdOrg = (ObjectSet<StdOrg>) _StdOrg.Where(r => r.IsArchived == false);
            }
            return _StdOrg;
        }
    }

1 个答案:

答案 0 :(得分:2)

看看这个http://www.matthidinger.com/archive/2012/01/25/a-smarter-infrastructure-automatically-filtering-an-ef-4-1-dbset.aspx

基本上是一个过滤DBSet实现,该示例基本上显示用于软删除。我们在App中使用它没有问题。

但是我们正在使用DBcontext,因此不确定它如何与Object Context一起使用或如何进行调整