使用Microsoft.SqlServer.TransactSql.ScriptDom生成查询

时间:2015-06-21 06:04:14

标签: c# sql sql-server scriptdom

似乎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语句。我已经检查了this blog post但是生成的对象图的xml非常复杂!

1 个答案:

答案 0 :(得分: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

我没有确切的用例说明你的用例。

相关问题