Добавление константы, где происходит сопоставление Linq с SQL - PullRequest
1 голос
/ 12 декабря 2008

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

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

Колин Г

Ответы [ 2 ]

2 голосов
/ 12 декабря 2008

Один из способов решения этой проблемы - использовать метод расширения, который возвращает 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;
1 голос
/ 12 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...