C# ExecuteMultipleResponse;如何从响应中读取和存储guid

C# ExecuteMultipleResponse;如何从响应中读取和存储guid,c#,list,dynamics-crm-2011,dynamics-crm,crm,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> personID

我使用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值

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

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

string id = response.Response.Results["id"].ToString()
如果它按预期工作,您还应该能够实例化guid(如果需要):

Guid guid = new Guid(id);

谢谢你,Guido,但是我首先不能得到guid值。那么如何将其存储在数组中呢。我知道响应本身一次包含10条记录,但当我尝试响应.result.Values.Item[0]时,我得到一个错误,即该项不存在。我正在尝试找到一种方法,将传递到ExecuteRequest的数据链接到响应中返回的Guid。是不是响应的[0]元素对应于原始多个请求的[0]元素?这是有效的!先生,你是个天才。非常感谢@Henrik,在我的头撞在桌子上三个小时后,我终于可以看到Guid了。谢谢你id是Results属性返回的唯一内容,还是返回用于创建记录的其他值?我希望找到一种方法将每个响应与它的特定请求联系起来——希望首先使用请求中发送的值。
Guid guid = new Guid(id);