将QueryExpression转换为SQL字符串

时间:2018-11-27 13:01:05

标签: c# sql .net linq

有什么方法可以将QueryExpression转换为SQL语句吗? 例如:

QueryExpression query = new QueryExpression("entity");
query.ColumnSet = new ColumnSet("col1");
query.Criteria.AddCondition("col2", ConditionOperator.Equal, 1);

SELECT col1 FROM entity WHERE col2 = 1

2 个答案:

答案 0 :(得分:0)

我假设您是在问是否有自动化的方法,简短的回答是。除非有人亲自为此编写一个库(我没有见过),否则.NET并不是开箱即用的。

有几个原因,但是最明显的原因是因为QueryExpression实现了SQL本身不支持的功能。它们是可由实体框架执行的操作,因为它可以将所有对象简单地读取到内存中,然后执行所需的任何操作。使用SQL,您必须将这些指令发送到数据库服务器,并且它需要了解您要告诉它做什么。

再次,我并不是说这是不可能的。如果确实愿意,您可能会想出一些非常有创意的方法来模仿Entity Framework的功能,但这将是一场艰苦的战斗。

答案 1 :(得分:0)

解决方案是将查询转换为FetchXML(https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/org-service/sample-convert-queries-fetch-queryexpression),然后找到一些工具或库将FetchXML转换为SQL。