В фигурных скобках в запросе выбора 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}'");