我是ServiceStack和OrmLite的新手,在工作中,我经常遇到
SqlExpressionVisitor
我的问题是:
它基本上是什么?使用它有什么好处?我可以从中获取原始字符串查询吗?
您有一个枚举,您可以在其上执行 Linq 查询:
Where
、OrderBy
、Skip
、Take
。这将遍历枚举并返回结果枚举。
使用 ORM Lite(和实体框架)您也可以做到这一点。但他们没有使用
IEnumerable
,而是使用 IQueryable
。此接口为您提供与这些 LINQ 查询相同的用法,但在幕后它们不会编译为 DLL 代码。相反,它们被保留为 Expressions
。
SqlExpressionVisitor
读取此表达式并尝试将其转换为 SQL 查询,该查询可以执行并返回此 IEnumerable<T>
的 IQueryable<T>
,这是查询结果的列表。
您还可以通过这种方式构建您自己的
IQueryable
LINQ 提供程序:https://msdn.microsoft.com/en-us/library/bb546158.aspx(适用于第三方 API 或其他数据库)。