如何使用C#以编程方式创建SSIS Foreach ADO枚举器

时间:2016-12-24 10:09:39

标签: c# ssis

我正在尝试使用C#构建我的包,并以编程方式将一个scanf任务添加到SSIS包中。但是,我无法弄清楚如何将Source设置为我的ADO对象并将ADO对象字段映射到变量映射。

修改

到目前为止,我有这个。它创建任务ok,我正在添加变量。所以我认为我只需要能够设置ADO对象源变量,但无法解决它。

Foreach ADO Enumerator

1 个答案:

答案 0 :(得分:0)

我想您正在询问如何在Foreach ADO枚举器配置中设置“ADO对象源变量”。

你非常接近。 foreach循环容器的行为有点像Task,因为它承载了InnerObject。根据需要将此InnerObject设置为适当的枚举器。

在您的代码中,您创建了ForEachEnumeratorHost对象。如果查看文档,可以看到它具有InnerObject属性。您需要访问InnerObject并将其强制转换为您想要的精确类型的枚举器。在这种情况下,您应该将其强制转换为ForEachADOEnumerator类型的对象。一旦你投射它,那么强制转换对象可以向你展示类型,DataObjectVariable等属性,可用于配置Ado枚举器。

另外,要访问ForEachADOEnumerator对象,需要添加对Microsoft.SqlServer.ForEachADOEnumerator.dll的引用

所以就这样做:

// cast the inner object as ForEachADOEnumerator 
        ForEachADOEnumerator adoEnum = forEachEnumeratorHost.InnerObject as ForEachADOEnumerator;

        // then access the properties and set them
        // set the variable
        adoEnum.DataObjectVariable = "User::MyVar";

        // set the enumeration mode
        adoEnum.Type = ADOEnumerationType.EnumerateRowsInFirstTable;

        // finally...
        forEachLoop.ForEachEnumerator = forEachEnumeratorHost;

作为一般准则,我建议您查看所有这些相应课程的msdn文档;对ssis包进行手动更改并观察xml中的更改,并将它们与msdn文档中的不同类,属性和方法联系起来。很快,您将了解如何以编程方式开发软件包。