为什么要使用"Limit()" ServiceStack OrmLite v4中不再存在这种方法? [英] Why does the "Limit()" method no longer exist in the ServiceStack OrmLite v4?
问题描述
在ServiceStack OrmLite v3中,您可以执行以下操作:
in ServiceStack OrmLite v3 you could do:
var rows = db.Select<Employee>().Limit(10));
或者:
var rows = db.Select<Employee>().Limit(5, 10)); // skips 5 then takes 10
但是我无法在v4中找到这些方法.
However I cannot find these methods any longer in v4.
我想我可以改为执行以下操作:
I suppose I can do the following instead:
var rows = db.SelectLazy<Employee>().Take(10);
但是我怎么做一个db.Select
(不必编写直接的SQL),它将转换为(例如在SQLite中):
However how can I do a db.Select
(not having to write direct SQL) which will translate to (in SQLite for example):
SELECT * FROM Employee LIMIT 10;
此外,是否可以为以下内容编写等效查询(再次无需编写直接SQL)?
Also, is it possible to write an equivalent query for the below (again without having to write direct SQL)?
SELECT * FROM Employee ORDER BY Age;
谢谢.
推荐答案
在ServiceStack.OrmLite v4中,Limit()似乎只能作为SqlExpression<T>
的扩展使用.建立查询:
In ServiceStack.OrmLite v4, Limit() seems to only be available as an extension of SqlExpression<T>
. To build a query:
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);
我希望这可以帮助某人.我花了几个小时进行谷歌搜索.
I hope this helps someone out. It took me a few hours of Googling.
这篇关于为什么要使用"Limit()" ServiceStack OrmLite v4中不再存在这种方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!