Entity Framework Query Filter - PullRequest
       35

Entity Framework Query Filter

1 голос
/ 30 августа 2011

Можно ли добавить сортировку глобального фильтра к контексту объекта Entity Framework? Например, наличие объекта ObjectMaterialized, который может возвращать индикатор того, включать ли данный объект в набор результатов или нет.

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Нет, это невозможно.Платформа сущностей и ее встроенные поставщики не поддерживают глобальные фильтры.

Вы можете добиться некоторой базовой фильтрации с помощью простой оболочки:

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 голос
/ 30 августа 2011

Вы пытаетесь сделать что-то вроде показа только активных клиентов?Если это так, вы можете использовать Inheritance и создать тип ActiveCustomer и добавить условие в ваше отображение в Status == "Active".. Затем установите тип Customer в качестве абстрактного базового класса, чтобы предотвратить непосредственное создание экземпляра.Затем вы можете запросить вашу модель для Customers.OfType<ActiveCustomer>().

...