Предположения:
- У вас есть ADO изменяемый объект пользователя :: ADOObject, содержащий две колонки Key и Value.
Код:
using Microsoft.SqlServer.Dts.Runtime.Enumerators;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Enumerators.ADO;
ForEachLoop f = new ForEachLoop();
ForEachADOEnumerator ado_enum = (ForEachADOEnumerator) f.ForEachEnumerator.InnerObject;
ado_enum.Type = ADOEnumerationType.EnumerateRowsInFirstTable;
ado_enum.DataObjectVariable = "User::ADOObject";
f.VariableMappings.Add();
f.VariableMappings[0].VariableName = "User::Key";
f.VariableMappings[0].ValueIndex = "Key";
f.VariableMappings.Add();
f.VariableMappings[1].VariableName = "User::Value";
f.VariableMappings[1].ValueIndex = "Value";
Если вы используете EzAPI, сначала вы должны изменить источник EzAPI как класса EzForEachLoop не выставляет VariableMappings из коробки. Добавьте это свойство к классу EzForEachLoop в EzExecutables.cs:
public ForEachVariableMappings VariableMappings
{
get { return (m_exec as ForEachLoop).VariableMappings; }
}
, а затем в коде инициализации EzForEachLoop как так (при условии, это называется внутри класса пользовательского пакета, то «этот» аргумент в конструкторе относится к этому пакету):
EzForEachLoop ezf = new EzForEachLoop(this);
ezf.Initialize(ForEachEnumeratorType.ForEachADOEnumerator);
а теперь EZF «ы перечислитель и переменные отображения могут быть установлены таким же образом, как цикл просмотра ф выше.