2011-08-30 95 views
1

是否有可能为实体框架对象上下文添加一种全局过滤器?比如拥有一个ObjectMaterialized,它可以返回一个指示是否在结果集中包含给定的对象。实体框架查询过滤器

+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; 
     } 
    } 
} 
+0

因此,EF和RIA服务的组合与WCF数据服务中的QueryInterceptors没有任何相似之处? – BowlingForGreens

+0

我不确定RIA服务,但EF本身没有任何此类功能。 QueryInterceptors特定于WCF数据服务。 –

1

你试图做这样的事情只显示活动的客户?如果是这样,您可以使用继承并创建一个ActiveCustomer类型并在映射中添加一个条件为Status == "Active".然后将您的Customer类型设置为Abstract Base Class以防止直接实例化。然后你可以查询你的模型Customers.OfType<ActiveCustomer>().