如何在Entity Framework上应用全局过滤器?

时间:2010-04-12 19:01:00

标签: linq entity-framework

我的模型中有一个名为Customers的表,其中包含字段IsActive。每当我对客户运行查询时,只应检索活动客户。我可以在每个查询中包含过滤器,但这看起来不太好。我希望能够在Object Context杠杆上覆盖Customers属性,但我不确定这是否可行。任何帮助将非常感谢!感谢

4 个答案:

答案 0 :(得分:5)

虽然是迟到的反应,但我会把它放在这里,这样可以帮助别人。

您还可以在edmx文件中为实体设置条件。选择您的实体并转到Goto Mapping Details并创建一个新条件。

enter image description here

答案 1 :(得分:3)

也许您可以声明新属性并使用它:

public partial class MyEntities
{
    public ObjectQuery<User> ActiveCustomers
    {
        get
        {
            return Customers.Where(c => c.IsActive);
        }
    }
}

答案 2 :(得分:0)

我不知道为什么这对你来说是个问题。您可以在一个函数中放入一个查询:

IEnumerable<Customers> GetActiveCustomers()  
{  
    var activeCustomers =   
    from cust in db.Customers  
    where cust.IsActive == true  
    select cust;  
    return activeCustomers;  
}

每次你喜欢的时候都打电话。您甚至可以将活跃客户放在某个私有列表中,甚至更好的ObservableCollection。然后,您可以再次查询结果:

 var myCustomers =  
 from cust in GetActiveCustomers()  
 where cust.CustomerName == "John"  
 select cust;  

就是这样。

答案 3 :(得分:-5)

您需要做的就是检索所有客户,无论他们是否处于活动状态,然后使用

foreach(Customer c in Results)
{
if(c.IsActive)
   listofactivecustomers.Add(c);
}