c# - 执行多重响应;如何从响应中读取和存储 Guid

标签 c# list dynamics-crm-2011 dynamics-crm crm

我正在使用 ExecuteMultipleResponse 方法使用 SSIS 一次插入 10 条帐户记录。

    List<Entity> _Accounts = new List<Entity>();
//  Check the batch size and process
public override void InputAccount_ProcessInput(InputAccountBuffer Buffer)
{
    //List<int> personIDs = new List<int>();

    int index = 0;


    while (Buffer.NextRow())
    {
        _Accounts.Add(InputAccountFromBuffer(Buffer));
        //personIDs.Add(int.Parse(Buffer.sPersonID));
        index++;

        if (index == 10)
        {
            ImportBatch();
            index = 0;
        }
    }
    ImportBatch();
}

private void ImportBatch()
{
    if (_Accounts.Count > 0)
    {
        var multipleRequest = new ExecuteMultipleRequest()
        {
            Settings = new ExecuteMultipleSettings()
            {
                ContinueOnError = true,
                ReturnResponses = true
            },
            Requests = new OrganizationRequestCollection()
        };

        foreach (var profContact in _Accounts)
        {
            CreateRequest reqCreate = new CreateRequest();
            reqCreate.Target = profContact;
            reqCreate.Parameters.Add("SuppressDuplicateDetection", false);
            multipleRequest.Requests.Add(reqCreate);
        }

        ExecuteMultipleResponse multipleResponses = (ExecuteMultipleResponse)organizationservice.Execute(multipleRequest);

        var responses = (ExecuteMultipleResponseItemCollection)multipleResponses.Results["Responses"];

        foreach (var response in responses)
            {
                if (response.Fault != null)
                    {
                    // A fault has occurred, handle it here
                    }
                    else
                    {
                       // THIS IS WHERE I KNOW THE GUID VALUE EXIST.
                    }
            }


        //IEnumerator f = multipleResponses.Responses.GetEnumerator();


        _Accounts.Clear();
    }

}

上面的代码工作正常,但是,我现在需要从对列表的响应中读取和存储 Guid。此信息对于包中的下一步至关重要。我知道,如果我要创建单个记录,我可以简单地说,

Guid newRecord = _service.Create(account);

我什至设法下来检查响应是否有“错误”,如果没有错误,则响应中应该存在 Guid 值。

在 QuickWatch 中运行 response.Response.Results.Values 向我显示了 guid,但我找不到直接读取它并将其存储为 Guid 的方法。 enter image description here

最佳答案

创建记录的 guid 应该存储在 OrganizationResponse 中,可以在 ExecuteMultipleResponseItem 中找到 尝试以下操作以获取字符串形式的 guid:

string id = response.Response.Results["id"].ToString()

如果它按预期工作,您还应该能够在需要时实例化一个 guid:

Guid guid = new Guid(id);

关于c# - 执行多重响应;如何从响应中读取和存储 Guid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535952/

相关文章:

c# - 传递一个List到一个方法中,方法内修改list不影响 'original'

javascript - 在对 MS CRM 2013 按需的 SOAP 调用内的 fetchxml 中编码页面 cookie

dynamics-crm-2011 - Microsoft Dynamics CRM 2011 中的审计自定义

c# - 在整个 session 中维护数据表和变量

c# - 创建多个字节数组时出现 OutOfMemoryException

python - 使用列表时的调试技巧

python - 从带有列表的列表中获取最大值?

dynamics-crm-2011 - 设置自定义事件的 OwnerId

c# - 从四元数中读取特定值

c# - ToString() 自定义数字格式的奇怪之处