实体框架查询过滤器

时间:2011-08-30 12:19:18

标签: c# .net entity-framework entity

是否可以向Entity Framework对象上下文添加一种全局过滤器?比如拥有一个ObjectMaterialized,它可以返回一个指示器,指示是否在结果集中包含给定的对象。

2 个答案:

答案 0 :(得分:2)

不,不可能。实体框架及其内置提供程序不支持全局筛选器。

您可以使用简单的包装器实现一些基本过滤:

public class MyContext : ObjectContext
{
    private ObjectSet<MyEntity> myEntities;

    public Expression<Func<MyEntity, bool>> GlobalMyEntityFilter { get; set; }

    public IQueryable<MyEntity> MyEntities
    {
        get
        {
            if (GlobalMyEntityFilter != null)
            {
                return myEntities.Where(GlobalMyEntityFilter);
            }

            return myEntities;
        }
    }  
}

答案 1 :(得分:1)

您是否尝试执行仅显示活跃客户的操作?如果是这样,您可以使用继承并创建ActiveCustomer类型并在映射中添加条件Status == "Active".然后将您的Customer类型设置为抽象基类以防止直接实例化。然后,您可以查询您的模型Customers.OfType<ActiveCustomer>().