ssis - BIML 类块错误:“AstTableNode”不包含“GetTag”的定义,并且没有可访问的扩展方法“GetTag”
问题描述
我创建了一个 HelperFunctions.cs 文件,其中包含以下内容:
using Varigence.Languages.Biml.Table;
public static class HelperFunctions
{
public static string GetDisplayTableName(AstTableNode table)
{
return table.GetTag("DatabaseName").ToUpper() + "_" + table.Schema.Name.ToUpper() + "_" + table.Name.ToUpper();
}
}
但是它不识别 GetTag() 并抛出错误:
“AstTableNode”不包含“GetTag”的定义,并且找不到接受“AstTableNode”类型的第一个参数的可访问扩展方法“GetTag”(您是否缺少 using 指令或程序集引用?)。我需要添加什么才能完成这项工作?谢谢乔恩
解决方案
静态方法需要以参数为前缀this
SO_63828312.cs
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Varigence.Biml.Extensions;
using Varigence.Languages.Biml.Table;
public static class HelperFunctions
{
public static string GetDisplayTableName(this AstTableNode table)
{
return table.GetTag("DatabaseName").ToUpper() + "_" + table.Schema.Name.ToUpper() + "_" + table.Name.ToUpper();
}
}
我的静态 Biml 定义了一个表,它需要一个模式,它需要一个数据库,它需要一个连接。所有这些都是为了让我们找到一个 AnnotationType 为 Tag 且值为 AW 的表。
SO_63828312.T0.biml
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
<OleDbConnection ConnectionString="Data Source=localhost\dev2017;Initial Catalog=tempdb;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;Packet Size=32767;" Name="AdventureWorks" />
</Connections>
<Databases>
<Database Name="AW" ConnectionName="AdventureWorks" />
</Databases>
<Schemas>
<Schema DatabaseName="AW" Name="dbo" />
</Schemas>
<Tables>
<Table Name="foo" SchemaName="AW.dbo">
<Annotations>
<Annotation Tag="DatabaseName" AnnotationType="Tag">AW</Annotation>
</Annotations>
<Columns>
<Column Name="Col1" DataType="Int32"></Column>
</Columns>
</Table>
</Tables>
</Biml>
第 1 层执行。这开始了我们的动态分层。由于只有一个,我没有明确给出一个,但如果你有多个层,你会想要提供一个指令。
在这里,我枚举了我的 Tables 集合(在前面的层中定义)并且对于我找到的每个表,我写了表名和标签值
SO_63828312.T1.biml
<#@ code file="SO_63828312.cs" #>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#
string template = "<!-- {0}|{1} -->";
foreach(var t in this.RootNode.Tables)
{
WriteLine(string.Format(template, t.Name, t.GetDisplayTableName()));
}
#>
</Biml>
推荐阅读
- oracle - oracle 11g impdp 返回无效操作并且找不到对象
- android - signInWithEmailAndPassword 方法的模棱两可的行为
- javascript - 如何在使用滚动上下移动元素时在页脚行停止元素
- jquery - Jquery开/关设置超时
- c# - 为什么在 FFT 自相关的情况下 AForge.net 会给出不同的输出?
- asp.net - 当前用户的数字证书位置 StoreLocation
- c# - 如何使用 Dapper 获取用户定义的 SQLException 编号
- c# - Unity 3D如何找到正在实例化隐藏组件的游戏对象
- swift - 如何解析 XML - Swift 3 中的复杂 XML 构造
- logstash - logstash 管道中的服务器名称