如何在SSIS脚本任务中传递自定义对象列表?

伯特·瓦格纳

我有一个脚本任务,该任务创建一个自定义对象列表并将它们设置为SSIS对象变量。

自定义类:

public class Dog
{
    public string Name { get; set; }
}

填充列表并将其设置为SSIS对象变量“ myDogs”的代码:

public void Main()
{
    List<Dog> dogs = new List<Dog>();

    Dog dog1 = new Dog();
    dog1.Name = "Fido";

    Dog dog2 = new Dog();
    dog1.Name = "Roofus";

    dogs.Add(dog1);
    dogs.Add(dog2);

    Dts.Variables["myDogs"].Value = dogs;
}

在第二个脚本任务中,我试图将我的“ myDogs”对象变量读回到列表中:

在第二个脚本任务中复制的自定义类:

public class Dog
{
    public string Name { get; set; }
}

我的第二个脚本任务中的主要代码:

public void Main()
{
    var varDogs = Dts.Variables["myDogs"].Value;
    List<Dog> dogs = new List<Dog>();

    dogs = (List<Dog>)varDogs;
}

我的varDogs对象正确地从我的SSIS对象变量“ myDogs”加载了数据。但是,当我尝试将varDogs强制转换为Dog类型的列表时,收到一条错误消息,提示“无法强制转换System.Collections.Generic.List类型的对象”。

有谁知道我将如何将这些var数据重新投射到列表中?谢谢。

布兰登教堂

在尝试任何其他操作之前,请将自定义类编译为.dll,然后将其安装到GAC(全局程序集缓存)中。当与自定义对象进行交互时,SSIS确实很挑剔,并且希望在那里找到对它们的引用。可以在此处找到GAC安装的MSDN示例安装.dll后,只需在脚本任务中引用它,SSIS就会自动搜索GAC签名。

这是在SSIS中管理自定义对象的正确方法,因为您在两个脚本任务中都引用一个类。尽管当前两个脚本任务之间的类相同,但是您的错误表明它们来自单独的命名空间。

正如其他人所建议的那样,序列化是可行的,但这至少是一个棘手的解决方案,因为您必须在两面都维护类(脚本任务1和脚本任务2)。在开始处理复杂类型之前,最好先熟悉本机SSIS解决方案:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在脚本任务中访问对象 SSIS 变量?

如何从SSIS中的脚本任务重置对象变量?

如何在ssis脚本任务中显示变量

从SSIS脚本任务创建对自定义程序集的引用-vb

影响C#脚本任务中的SSIS对象变量

如何在Google脚本的自定义“ whenFormulaSatisfued”函数中传递范围对象?

如何在SSIS C#脚本任务中添加Microsoft Office Interop

SSIS如何在脚本任务中执行dll(未找到SharePoint功能)

如何在Bundle中传递自定义对象?

如何在GraphQL中创建自定义对象列表

如何在自定义索引的列表中插入对象

如何在Activiti脚本任务中获取和设置属性对象的属性值

如何在脚本任务中访问csv字段

在自定义VSTS PowerShell脚本任务中使用特殊字符

如何使用Dart的http传递自定义对象列表?

从变量中检索复杂对象的SSIS脚本任务“无效的转换异常”

SSIS通过脚本任务写入对象变量

如何在自定义列表视图的自定义适配器类中传递多个数组值?

SSIS C#脚本任务:如何在大型XML文件上以增量匹配/替换模式

如何通过脚本任务发送ssis中特定文件夹中的文件

如何在Scalacheck中为自定义列表定义任意对象?

如何在自定义 Gradle 任务中调用方法?

如何在sbt中实现自定义监视任务?

如何通过SSIS脚本任务打开OLEDBConnection?

SSIS脚本任务从Excel工作表中删除行

SSIS中的脚本任务不起作用

在SSIS脚本任务中激活特定的Excel工作表

如何在affolstad材质对话框中传递自定义列表以进行多选?

如何通过Kotlin中的Intent传递自定义对象