servicestack ormlite throws" ORDER BY子句无效......"使用带有引用的orderby时出现sql异常

时间:2014-10-30 22:11:38

标签: sql-server servicestack ormlite-servicestack

我的模特有:

class Request
{
   public int RequestId {get;set;}
   [Reference]
   public List<Package> Packages {get;set;}
}

class Package 
{
   public int PackageId {get;set;}
   public inst RequestId {get;set;}
}

如果我跑:

db.LoadSelect<Request>(q => q.OrderBy(x => x.RequestId));

OrmLite将生成sqls,如:

SELECT "RequestId"  FROM "Request" ORDER BY "RequestId" ASC

SELECT "PackageId", "RequestId" FROM "Package"
WHERE "RequestId" IN (SELECT "Request"."RequestId" FROM "Request" ORDER BY "RequestId" ASC)

会引发以下sql错误:

  

ORDER BY子句在视图,内联函数中派生无效   表,子查询和公用表表达式,除非TOP或FOR   还指定了XML。

,原因显然是第二个查询的子查询中的ORDER BY。

所以这里有两点:

  1. 这是OrmLite Sql Provider中的错误吗?
  2. 如何编写ormlite查询以使用引用加载模型并同时对它们进行排序?

1 个答案:

答案 0 :(得分:1)

嗯,无法在Sub Selects中使用ORDER BY似乎是特定于Sql Server的限制。但是因为它不应该影响行为,我已经清除了加载参考中使用的ORDER BY术语子选择in this commit

此更改可从 v4.0.33 + now available on MyGet获得。