什么是 SqlExpressionVisitor

What is SqlExpressionVisitor

我是ServiceStack & OrmLite的新手,工作中经常遇到SqlExpressionVisitor

我的问题是:

它基本上是什么?使用它有什么好处?我可以从中获取原始字符串查询吗?

您有 Enumartion,您可以在其上执行 Linq 查询:Where、OrderBy、Skip、Take。这通过枚举,returns 你得到一个可枚举的结果。

使用 ORM Lite(和 Entity framework)您也可以这样做。但是他们不使用 IEnumerable,而是使用 IQuerably。此接口为您提供与这些 LINQ 查询相同的用法,但在幕后,这些查询并未编译为 DLL 代码。相反,它们被保存为 Expressions.

SqlExpressionVisitor 读取此表达式并尝试将其转换为 SQL 查询,可以执行并返回此 IQuerable<T>IEnumerable<T>,这是查询结果列表。

您也可以通过这种方式构建自己的 IQueryable LINQ 提供程序:https://msdn.microsoft.com/en-us/library/bb546158.aspx(用于第三方 api 或其他数据库)。