Это code принимает пользовательскую строку запроса (собственный синтаксис) и преобразует ее в Expression для использования с предикатом запроса EF Where. Эта строка запроса может иметь от 0 до 5 параметров.
В дополнение к строке запроса она будет связана с массивом строк (в настоящее время он находится в файле), разделенных запятыми, с одно значение для каждого параметра в запросе.
Например, может существовать пользовательская строка запроса, такая как:
Код: Выделить всё
"Car.Color = %1 and Car.NumDoors = %2"
Код: Выделить всё
"Red",2
"Blue,4
"Green",2
"Red",4
Уже существует код, который превращает эту пользовательскую синтаксическую строку в выражение, а также некоторый код, который заполняет ее каждым набором параметров. Этот код довольно быстрый и не кажется проблематичным (не то чтобы это имело значение, потому что я все равно не могу изменить эту часть кода).
Настоящая проблема заключается в пользовательском характере из этих запросов они выполняются индивидуально... поэтому, если имеется 100 тысяч строк комбинаций параметров, к базе данных выполняется 100 тысяч запросов.
Я пытаюсь выяснить, как я могу это оптимизировать каким-то образом группируя эти вызовы базы данных. Я не могу делать никаких предположений о том, насколько сложной может быть строка пользовательского запроса, хотя в ней максимум 5 параметров... но в принципе здесь может быть любое простое логическое выражение (включая круглые скобки и т. д.).
Надеялся найти предложение по этому вопросу. Преобразование выражения в строку T-SQL тривиально, но даже использование чего-то, предназначенного для динамического SQL, такого как sp_executesql, похоже, не сильно помогает... оно по-прежнему выполняет один запрос/набор параметров за раз (насколько это возможно). насколько я могу судить).
Подробнее здесь: https://stackoverflow.com/questions/786 ... difference
Мобильная версия