2011-12-22 1 views
1

Я использую L2S в своем приложении, но я переключаюсь все больше и больше на dapper.net, потому что у меня возникают серьезные проблемы с производительностью запросов и досадной проблемой n+1 selects.Как вызвать поставщика L2S для перевода предиката в виде Func <T,bool> в предложение SQL where?

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

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

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

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

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

ответ

2

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

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

Dynamic where clause in dapper, который предлагает использовать StringBuilder, но один из комментарии указывают на статью Сэма Шаффрона, Porting LINQ-2-SQL to Dapper for great justice, в которой говорится о внесенном SqlBuilder, который может вам помочь.

Generate a SQL clause using a Linq-to-Sql Expression, который предлагает использовать LINQ Где вызов и захват предложения WHERE из сгенерированного SQL.

+0

Я знаю, что я могу видеть SQL, сгенерированный L2S. Но дело не в этом. Я ищу код для создания такого SQL. – Jan

+0

@Jan Отредактированный мой ответ, надеюсь, будет более полезным. Дайте мне знать, если это все еще не удовлетворит. – JamieSee

+0

Хорошо, это более полезно - особенно ссылка на запись блога sams о SqlBuilder. То не совсем то, что я ищу, но оно идет в правильном направлении. – Jan