似乎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中的错误还是别的什么?!
更新:似乎问题是here in OrmLiteDialectProviderBase class。它应该检查参数长度等。
答案 0 :(得分:2)
您可以使用跳过OrmLite预处理的executing Custom SQL SqlList<T>
API,但您需要提供完整的SQL语句,例如:
var results = db.SqlList<Company>(
"SELECT * FROM Company WHERE Website='http://www.test.com/?session={123}'");