Можно поместить предложение константы where в отображение Linq в SQl.
Я действительно не хочу делать это на уровне запроса или в моем объекте доступа к данным, поскольку они в настоящее время являются полностью универсальными, и я хотел бы сохранить его таким образом, чтобы обеспечить жизнь другим разработчикам и избавить меня от постоянного повторения.
Колин Джи





Один из способов решить эту проблему - использовать метод расширения, который возвращает IQueryable вашего типа сущности, а затем использовать его везде, где эта сущность необходима.
Например, если бы все мои пользовательские запросы интересовали только лошади, у которых не установлен флаг Inactive, у меня был бы метод расширения GetHorses:
public static IQueryable<Horse> GetHorses(this DataContext db)
{
return from h in db.Horses
where !h.Inactive
select h;
}
Очевидно, что поскольку метод возвращает IQueryable, вы можете выполнять дополнительную фильтрацию / упорядочивание и т. д. В любом методе, который его использует. Итак, вместо моих пользовательских запросов, которые выглядят так:
var deadHorses = from h in db.Horses
where !h.inactive && !h.Alive
select h;
они бы выглядели так:
var deadHorses = from h in db.GetHorses()
where !h.Alive
select h;
Я считаю, что вы можете сделать это, используя свойство Options вашего DataContext. Проверьте метод AssociateWith.