先决条件:
我想在包执行开始时连接到 MS Dynamics CRM Web 服务并在整个包中重用连接,但我未能通过 SSIS 变量做到这一点。
我无法使用连接管理器,因为我使用OrganizationService.Execute
了 WebService 任务向导不支持的方法
脚步:
- 在 GAC 和脚本引用中添加了 Microsoft.Xrm.Sdk dll;
- 在里面创建了数据流任务和两个单独的脚本任务
- 创建了 2 个包变量
crmOrganizationService
和crmOrganizationServiceProxy
- 两种类型
System.Object
script task 1
并且script task 2
可以读写它们
- 两种类型
内部
script task 1
:- 实例化
OrganizationServiceProxy
并OrganizationService
连接到 MS Dynamics CRM Web 服务。 将对象的两个实例都分配给变量
//create public OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(orgServiceManagement, adCredentials); public IOrganizationService _service =(IOrganizationService)_serviceProxy; //assign this.Variables.crmOrganizationServiceProxy= _serviceProxy; this.Variables.crmOrganizationService=_service;
- 实例化
内部
script task 2
:OrganizationServiceProxy _serviceProxy = (OrganizationServiceProxy)this.Variables.crmOrganizationServiceProxy
错误:
在第 5 步,我收到 Invalid cast 异常,因为无法转换System.Object
为Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy
解决方法:
我确定问题出在变量的基本装箱中,同时在脚本任务之间传递它们。但是我没有找到更好的通用方法。在其中,我需要在脚本任务之间传递自定义类的实例。