将 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'sdb.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));