динамические запросы Linq с Entity Framework - PullRequest
3 голосов
/ 21 октября 2010

Мне известно о нескольких усилиях по динамическому построению запросов Linq, таких как this и this .

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

Моя главная проблема заключается в том, что запрос оптимизирован для базы данных и по возможности динамически пропускает ненужные предложения.

Есть ли какие-либо новые разработки в EF 4.0 для таких сценариев?

UPDATE

вот одна ссылка, которую я нашел очень полезной: http://www.albahari.com/nutshell/predicatebuilder.aspx действительно, динамическое добавление фильтров «И» тривиально, а добавить фильтры «И» можно легко, используя построитель предикатов:

var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (p => p.Description.Contains (temp));

и в соответствии с LinqPad sql отправляется в зависимости от того, какие фильтры были применены.

1 Ответ

1 голос
/ 21 октября 2010

За исключением причины "Где" (псевдокод, надеюсь, я правильно понял ваш вопрос):

var query = IQueryable<Foo>();

if(someCondition)
    query = query.Where(......);

var result = query.Select(.......);

Для динамических запросов - я не слышал ничего нового. ИМХО нам придется остаться со строками. Можете ли вы придумать лучший подход?

...