Фильтровать объекты по функции сервера в Entity Framework? - PullRequest
1 голос
/ 19 ноября 2010

Я хочу, чтобы EF использовал функцию табличных значений T-SQL для фильтрации объектов.

Функция возвращает список CompanyID, так что EF может добавить оператор where, например

...WHERE CompanyID IN (SELECT CompanyID FROM dbo.BySearchOptions({0},{1}))

Так что позже я смогу создать метод расширения вроде

IQueryable<Company> BySearchOptions(this IQueryable<Company, SearchOptions options)

и связать его с другими, как

var companies = Entities.Companies.
    Where(someconde).BySearchOptions(myOptionsObject).OrderBy.Whatever...

Возможно ли это?

РЕДАКТИРОВАТЬ: Я знаю, что существует Entity SQL, так что метод Where () может использовать строки ESQL, а не предикаты. Можно ли использовать Entity SQL для применения функции t-sql?

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

EF поддерживает функции отображения SQL, но не (в EF 4), которые возвращают табличные значения.

Одной из альтернатив является использование ObjectContext.ExecuteStoreQuery и передача T-SQL.

Но вы не сможете продолжить составление запроса, как вы просите.

Возможный обходной путь - поместить запрос SQL в представление сервера БД.

0 голосов
/ 19 ноября 2010

Можно выполнить фильтрацию по функции, поместив оператор выбора в хранимую процедуру, а затем вызвав хранимую процедуру из EF.

Возможно, это не элегантное решение, которое вы ищете, но оно будет работать.

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