Как вызвать поставщика L2S для перевода предиката в форме Func <T, bool> в предложение SQL where? - PullRequest
1 голос
/ 22 декабря 2011

Я использую L2S в своем приложении, но все больше и больше переключаюсь на dapper.net , потому что у меня возникают серьезные проблемы с производительностью запросов, а раздражающие n + 1 выбирают проблема.

Работает нормально, но мне не хватает удобного стиля написания предикатов LINQish при фильтрации данных.

Итак, мой вопрос, как я могу перевести предикат в форме Func<T, bool> на SQL Server, где предложение использовать его с dapper?

Я думаю, что кто-то должен был сделать это раньше, или все тупые пользователи вручную пишут свои SQL-операторы?

Как видно из заголовка, возможно, есть возможность вызвать поставщика LINQ2SQL для SQL Server?

В основном я ищу что-то вроде инверсии динамического linq.

1 Ответ

2 голосов
/ 23 декабря 2011

Есть способы увидеть SQL, сгенерированный LINQ. См. Статью Просмотр SQL, сгенерированного LINQ to Entity Queries из журнала Visual Studio.

Теперь, когда я лучше понимаю, что вы ищете, я немного больше разбираюсь в этом и нашел пару связанных постов, которые стоит посмотреть:

Динамическое предложение where в dapper , в котором предлагается использовать Stringbuilder, но один из комментариев указывает на статью Сэма Шафрона, Перенос LINQ-2-SQL в Dapper для большой справедливости , в котором рассказывается о готовом SqlBuilder, который может вам помочь.

Создание предложения SQL с использованием выражения Linq-to-Sql , в котором предлагается использовать вызов LINQ Where и извлечь предложение WHERE из сгенерированного SQL.

...