0

在 ServiceStack OrmLite v3 中,您可以执行以下操作:

var rows = db.Select<Employee>().Limit(10));

或者:

var rows = db.Select<Employee>().Limit(5, 10)); // skips 5 then takes 10

但是我在 v4 中再也找不到这些方法了。

我想我可以改为执行以下操作:

var rows = db.SelectLazy<Employee>().Take(10);

但是,我怎样才能做一个db.Select(不必编写直接 SQL)将转换为(例如在 SQLite 中):

SELECT * FROM Employee LIMIT 10;

此外,是否可以为以下内容编写等效查询(同样无需编写直接 SQL)?

SELECT * FROM Employee ORDER BY Age;

谢谢。

4

2 回答 2

4

在 ServiceStack.OrmLite v4 中,Limit() 似乎只能作为SqlExpression<T>. 要构建查询:

var query = db.From<SWChars>().Limit(10);
query = query.Where<SWChars>(char => 
    char.FirstName == "Jar Jar" &&
    char.FunnyLines < 0);

var result = db.Select<SWChars>(query);

我希望这可以帮助某人。我花了几个小时的谷歌搜索。

于 2016-05-25T07:36:58.203 回答
1

我可以在文档中看到OrderBy/ OrderByDescending,它看起来像:

var rows = db.SelectLazy<Employee>().OrderBy<Employee>(e=>e.Age).Take(10);

这可能有助于Limit解决ServiceStack.OrmLite 问题:编写自定义 SQL 并获取结果集的方法在哪里?

于 2014-07-31T11:55:32.140 回答