列名未正确加载SSIS中的c#脚本

列名未正确加载SSIS中的c#脚本,c#,ssis,C#,Ssis,我对使用SSI编写C#脚本还不熟悉,所以我不知道为什么会发生这种情况。我正在使用脚本组件读取一些文件。带有下划线的列名显示不正确 错误代码如下所示。 严重性代码说明项目文件行抑制状态 错误CS1061“Output0Buffer”不包含“Fundered\u amnt”的定义,并且找不到可访问的扩展方法“Fundered\u amnt”,该扩展方法接受类型为“Output0Buffer”的第一个参数(您是否缺少using指令或程序集引用?向脚本任务添加列时,我不太清楚这些规则,但在脚本任务中,

我对使用SSI编写C#脚本还不熟悉,所以我不知道为什么会发生这种情况。我正在使用脚本组件读取一些文件。带有下划线的列名显示不正确

错误代码如下所示。 严重性代码说明项目文件行抑制状态
错误CS1061“Output0Buffer”不包含“Fundered\u amnt”的定义,并且找不到可访问的扩展方法“Fundered\u amnt”,该扩展方法接受类型为“Output0Buffer”的第一个参数(您是否缺少using指令或程序集引用?

向脚本任务添加列时,我不太清楚这些规则,但在脚本任务中,数据流列名与可用名称之间会发生转换。假设数据流中每个带有下划线的列都报告有错误,我猜这是列名中的有效字符之一,而缓冲区的字段名中不允许使用该字符

如果我猜的话,下划线会被删除,因为脚本中的每一列都添加了一个_IsNull属性,而且多个下划线可能会使逻辑复杂化

给定一个源查询

SELECT 1 AS col1, 2 AS col_underscore_2;
我在数据流任务中得到两列,分别命名为
col1
col\u下划线\u 2
。将两者添加到脚本任务中

这是我的输入缓冲区(BufferWrapper.cs)的自动生成的结果定义

值得注意的是,它将
col\u下划线2
压缩为
col下划线2
的内部列名。如果您想在解决方案资源管理器中双击BufferWrapper.cs,或者将光标放在
public override void Input0\u ProcessInputRow(Input0Buffer行)
中的
Input0Buffer
上,然后点击F12(转到定义)

如果要查看自动生成的列

我认为类似的逻辑也适用于缓冲区名称

我假设您正在尝试自动生成脚本任务,并且希望将其考虑在内。此外,如果LendingClassRow可能有一个空值,则需要有如下逻辑

if(LendingClassRow.verification_status != null)
{
    Output0Buffer.verificationstatus = LendingClassRow.verification_status
}
// This entire block is not needed as it will be the default if no value is
// assigned but I call it out here in case future readers have a need to
// muck with it
else
{
    Output0Buffer.verificationstatus_IsNull = true;
}

您是否确实向脚本组件提供了这些列?
if(LendingClassRow.verification_status != null)
{
    Output0Buffer.verificationstatus = LendingClassRow.verification_status
}
// This entire block is not needed as it will be the default if no value is
// assigned but I call it out here in case future readers have a need to
// muck with it
else
{
    Output0Buffer.verificationstatus_IsNull = true;
}