我正在构建自定义SSIS转换数据流组件,并构建了一个自定义UI来管理我的自定义属性。我的组件有一个额外的ADO.net连接,我通过覆盖ProvideComponentProperties方法创建了它。
//New connection manager
IDTSRuntimeConnection100 conn = this.ComponentMetaData.RuntimeConnectionCollection.New();
conn.Name = "Central Store Connection";
conn.Description = "ADO.NET Connection to the central Data Store";
这为我提供了一个连接,我可以使用高级编辑器中的连接选项卡进行设置。在我的UI中,我有一个组合框,它绑定在包中的所有ADO.net连接中:
/// <summary>
/// Initialises the connections combobox only adding ADO.Net connections
/// </summary>
private void initialiseConnections()
{
if (connections != null)
{
for (int i = 0; i < connections.Count; i++)
{
if (connections[i].CreationName.ToLower().Contains("ado.net"))
{
comboConnections.Items.Add(connections[i]);
}
}
}
}
此处的连接是从我的UI类的initialize方法中的Microsoft.SqlServer.Dts.Runtime.Connections连接传递的。
我希望能够在组合框选择发生变化时设置RuntimeConnectionCollection。
我尝试将此设置为像自定义元数据属性,但这不起作用。
答案 0 :(得分:0)
您必须在RuntimeConnectionCollection上使用ConnectionManagerID。
private void comboConnections_SelectedIndexChanged(object sender, EventArgs e)
{
var val = comboConnections.SelectedItem;
this.metaData.RuntimeConnectionCollection[0].ConnectionManagerID = ((ConnectionManager)val).ID;
}
使用ConnectionManagerID属性后,一切正常。