Добавление константы, где происходит сопоставление Linq с SQL

Можно поставить константу where для отображения Linq в SQl.

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

Колин Дж.

12.12.2008 11:10:52
2 ОТВЕТА
РЕШЕНИЕ

Один из способов решения этой проблемы - использовать метод расширения, который возвращает 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;
2
12.12.2008 11:46:30

Я полагаю, что вы можете сделать это, используя свойство Options вашего DataContext. Проверьте метод AssociateWith.

1
12.12.2008 12:01:12