2011-08-30 99 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>().