Один из способов решения этой проблемы - использовать метод расширения, который возвращает IQueryable вашего типа сущности, а затем использовать его везде, где требуется эта сущность.
Например, если бы все мои пользовательские запросы интересовали только лошадей, у которых не установлен флаг Неактивно, у меня был бы метод расширения 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;