我正在尝试使用C#构建我的包,并以编程方式将一个scanf
任务添加到SSIS包中。但是,我无法弄清楚如何将Source设置为我的ADO对象并将ADO对象字段映射到变量映射。
修改
到目前为止,我有这个。它创建任务ok,我正在添加变量。所以我认为我只需要能够设置ADO对象源变量,但无法解决它。
Foreach ADO Enumerator
答案 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文档中的不同类,属性和方法联系起来。很快,您将了解如何以编程方式开发软件包。