Динамические запросы Linq с Entity Framework
Мне известно о нескольких усилиях по динамическому построению запросов Linq, таких как this и this.
Ни один из них не кажется идеальным, так как я хотел бы избежать помещения выражений в строку и опускать где, если это не нужно.
Моя главная проблема заключается в том, что запрос оптимизирован для базы данных и по возможности динамически пропускает ненужные предложения.
Есть ли какие-либо новые разработки в EF 4.0 для таких сценариев?
ОБНОВИТЬ
Вот одна ссылка, которая мне показалась очень полезной: http://www.albahari.com/nutshell/predicatebuilder.aspx действительно, динамическое добавление фильтров "И" тривиально, а добавить фильтры "И" можно легко, используя построитель предикатов:
var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (p => p.Description.Contains (temp));
и в соответствии с LinqPad sql получает в зависимости от того, какие фильтры были применены..
1 ответ
Для исключения причины "Где" (псевдокод, надеюсь, я правильно понял ваш вопрос):
var query = IQueryable<Foo>();
if(someCondition)
query = query.Where(......);
var result = query.Select(.......);
Для динамических запросов - я не слышал ничего нового. ИМХО нам придется остаться со строками. Можете ли вы придумать лучший подход?