E-SQL в Entity Framework DbContext

Я использую EF 5.0 Code First API, и мне нужно добавить возможность создания динамических выражений OrderBy (в пользовательском интерфейсе есть панель фильтров, где пользователи могут выбирать несколько критериев упорядочения (например, выбрать 20 лучших клиентов, упорядочить по фамилии ASC, затем по Дата рождения DESC).

ObjectContext API предоставляет метод OrderBy("it.PropertyName"), который выглядит великолепно, несмотря на отсутствие проверки во время компиляции. Однако я не могу найти аналогов в DbContext API.

Погуглив проблему нашел такой совет:

((IObjectContextAdapter)myContextInstance).ObjectContext.CreateQuery<MyEntity>("<ESQL Query>")

Однако я бы совсем не хотел отказываться от LINQ-запроса. Есть ли способы сделать что-то подобное (смешайте ESQL и LINQ, как это могло бы быть с помощью ObjectContext):

var customers = myDbContext.Customers.OrderBy("it.LastName desc").Where(c => c.Age < 18)

person nativehr    schedule 05.01.2013    source источник


Ответы (1)


Что-то вроде этого? Я не уверен в смешивании ESQL и LINQ, но ваш последний запрос можно выполнить полностью из LINQ.

var customers = myDbContext.Customers.OrderByDescending(a => a.LastName).ThenBy(c => c.BirthDate).Where(b => b.Age < 18);

person Jake    schedule 25.01.2013
comment
Спасибо за ответ, но дело в том, что условия могут добавляться динамически, и я заранее не знаю, какие столбцы будут использоваться при фильтрации. На данный момент я использую динамический LINQ. - person nativehr; 27.01.2013