2

它似乎ScriptDom有一个复杂的架构。由于没有关于 ScriptDom 的文档,您知道如何使用 ScriptDom 类型生成这样的连接查询吗?

SELECT c.Title as ColumnTitle, t.Title as TableTitle, o.Title as OwnerTitle FROM info.iColumns c 
    JOIN info.iTables t ON c.TableRef = t.Id 
    JOIN info.iOwners o ON t.OwnerRef = o.Id 
    JOIN info.iTablesKey k ON k.TableRef = t.Id
    WHERE t.DisplayIndex = 1

我想为我的报表生成器创建一个简单的查询生成器,但我不知道如何构建JOIN语句。我已经检查了这篇博文,但是为对象图生成的 xml 非常复杂!

4

1 回答 1

1

找出你需要添加的最简单的方法是做相反的事情——从你的 t-sql 开始,使用解析器来解析它并创建一个 TSqlScript,然后你将它传递给一个实现 TSqlFragmentVisitor 的类。

在实现 TSqlFragmentVisitor 的类中,对 Visit(TSqlScript 节点) 进行覆盖 - 在其中放置一个断点,然后您可以探索构成查询的对象。

使用 ScriptDom 构建 AST 非常具有挑战性,但最终还是有回报的 :)

例如,关于如何使用 scriptdom,请参阅下面的 scriptdom 部分:

https://the.agilesql.club/Blogs/Ed-Elliott/DacFx-Create-tSQLt-Tests-From-A-Dacpac

我没有您的用例的确切示例。

于 2015-11-03T08:35:22.193 回答