В фигурных скобках в запросе выбора OrmLite выдается ошибка

Похоже, OrmLite простой метод выбора расширения (Select<T>) пытается отформатировать строку запроса (например, SelectFmt<T>), и поэтому он выдает ошибку, если строка запроса содержит фигурные скобки, которые, как предполагается, содержат отсутствующие аргументы.

Пример запроса:

db.Select<Company>("Website='http://www.test.com/?session={123}'");

Ошибка выдана:

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

В идеале, Select<T> следует просто выполнить дословно, без форматирования строки.

Это ошибка в OrmLite или что-то еще?!

Обновление: похоже, проблема здесь в классе OrmLiteDialectProviderBase. Он должен иметь проверку на длину параметров и т. Д.

1 ответ

Решение

Ты можешь использовать SqlList<T> API для выполнения пользовательского SQL, который пропускает предварительную обработку OrmLite, но вам нужно будет предоставить полный оператор SQL, например:

var results = db.SqlList<Company>(
  "SELECT * FROM Company WHERE Website='http://www.test.com/?session={123}'");
Другие вопросы по тегам