Dynamics crm 2011 将多个记录导入CRM

Dynamics crm 2011 将多个记录导入CRM,dynamics-crm-2011,Dynamics Crm 2011,如何将数千条记录导入CRM? 我有一个可能有数千条记录的列表,希望在CRM中创建这些记录。 目前,我有一个方法接收列表调用另一个方法,该方法以200个批次创建记录,直到创建整个列表。 最初是每次1000次,因为这是ExecuteMultipleRequest的限制,但有时会超时。 增加ExecuteMultipleRequest的限制不是一个选项。 此方法将传递给整个列表 /*接收实体记录列表并执行executemultiplerequest,如果任何记录失败,则返回false*/

如何将数千条记录导入CRM?
我有一个可能有数千条记录的列表,希望在CRM中创建这些记录。

目前,我有一个方法接收列表调用另一个方法,该方法以200个批次创建记录,直到创建整个列表。
最初是每次1000次,因为这是ExecuteMultipleRequest的限制,但有时会超时。
增加ExecuteMultipleRequest的限制不是一个选项。

此方法将传递给整个列表

/*接收实体记录列表并执行executemultiplerequest,如果任何记录失败,则返回false*/
public bool CreateStagingRecords(列表记录),其中T:Entity
{
尝试
{
返回CreateStagingRecordsInBatch(记录,0,记录.计数);
}
捕获{}
返回false;
}
此方法以小片段递归方式导入列表

/*int start既用作处理列表的起点,也用作subImportNo**/
私有bool CreateStagingRecordsInBatches(列出记录,int开始,int结束,int尝试=0),其中T:Entity
{
var createAmount=(end-start>200)?200:end-start;//200或end和start之间的差值
var records200=记录.Skip(开始).Take(createAmount);
var multipleRequest=新的ExecuteMultipleRequest
{
设置=新的ExecuteMultipleSettings{ContinueOnError=false,ReturnResponses=true},
请求=新的OrganizationRequestCollection()
};
foreach(记录中的var暂存200)
{
multipleRequest.Requests.Add(新建CreateRequest{Target=staging});
}
ExecuteMultipleResponse responses=null;
尝试
{
responses=(ExecuteMultipleResponse)服务。Execute(multipleRequest);//这可能会超时
}
catch(System.TimeoutException)//请求超时
{
if(tries<4)//如果尚未重试5次,请重试
返回此.createStagingRecordsInBatch(记录、开始、结束、尝试+1);
return false;//我们已经尝试了太多次,放弃整个导入
}
foreach(responses.responses中的var响应)
{
if(response==null | | response.Fault!=null)//错误
{
如果(尝试次数<4)
返回此.createStagingRecordsInBatch(记录、开始、结束、尝试+1);
return false;//响应不好,与其尝试恢复,不如放弃此导入
}
}
if(createAmount==200&&start+200

上述方法可行,但由于这是一个常见问题,我想知道其他开发人员是如何解决的。

这是建议的方法之一,特别是如果您希望更严格的编程控制

有关更多选项,请参见此答案

我们通过编程调用CRM导入过程并提交内存中生成的CSV