将 OrmLite SqlExpression 与 Mysql 一起使用时检测到潜在的非法片段?
Potential illegal fragment detected when using OrmLite SqlExpression with Mysql?
当我尝试执行以下行时:
var vehicles = db.Select<VehicleResponse>(q => q.Select(
"SELECT make, model, year, color FROM Vehicles").Limit(skip: 0, rows: 10));
我收到错误:
Potential illegal fragment detected: SELECT make, model, year, color FROM Vehicles
如果我执行以下命令,我不会收到错误消息:
var vehicles = db.Select<VehicleResponse>(
"SELECT make, model, year, color FROM Vehicles").ToList();
执行自定义 SQL.
时,您通常应该使用 Custom Sql API's 等 db.SqlList<T>
如果您想在键入的 SqlExpression
中使用自定义 SQL,您应该使用 Unsafe*
API 来绕过任何自定义 SQL 检测。
但是对于 SqlExpression 的 Select
API 你应该只添加 SQL 语句的 "SELECT..." 部分,例如:
var vehicles = db.Select<VehicleResponse>(q => q.From<Vehicle>().Select(
"make, model, year, color").Limit(skip: 0, rows: 10));
虽然在这种情况下我不会费心指定列列表,只是让它 select 所有匹配的列,例如:
var vehicles = db.Select<VehicleResponse>(q =>
q.From<Vehicle>().Limit(skip: 0, rows: 10));
当我尝试执行以下行时:
var vehicles = db.Select<VehicleResponse>(q => q.Select(
"SELECT make, model, year, color FROM Vehicles").Limit(skip: 0, rows: 10));
我收到错误:
Potential illegal fragment detected: SELECT make, model, year, color FROM Vehicles
如果我执行以下命令,我不会收到错误消息:
var vehicles = db.Select<VehicleResponse>(
"SELECT make, model, year, color FROM Vehicles").ToList();
执行自定义 SQL.
时,您通常应该使用 Custom Sql API's 等db.SqlList<T>
如果您想在键入的 SqlExpression
中使用自定义 SQL,您应该使用 Unsafe*
API 来绕过任何自定义 SQL 检测。
但是对于 SqlExpression 的 Select
API 你应该只添加 SQL 语句的 "SELECT..." 部分,例如:
var vehicles = db.Select<VehicleResponse>(q => q.From<Vehicle>().Select(
"make, model, year, color").Limit(skip: 0, rows: 10));
虽然在这种情况下我不会费心指定列列表,只是让它 select 所有匹配的列,例如:
var vehicles = db.Select<VehicleResponse>(q =>
q.From<Vehicle>().Limit(skip: 0, rows: 10));