다음을 통해 공유


XRM 도구를 사용하여 데이터 업데이트

 

게시 날짜: 2016년 11월

적용 대상: Dynamics CRM 2015

Microsoft Dynamics 365: UpdateEntityUpdateStateAndStatusForEntity의 데이터를 업데이트하기 위해 CrmServiceClient 클래스에서 사용할 수 있는 두 가지 메서드가 있습니다.

XRM 도구 API를 사용하는 업데이트 작업에는 데이터 페이로드가 필요합니다. 데이터 페이로드는 사전 <string, CrmDataTypeWrapper> 개체 형식을 취합니다.CrmDataTypeWrapper는 귀하가 참조하고 있는 데이터 포인트에 무슨 종류의 취급을 적용할 필요가 있는지를 인터페이스에 알려주는 데 사용됩니다.

UpdateEntity

이는 레코드의 상태(state) 또는 상태(status)를 설정하는 것을 제외하고 Dynamics 365에서 레코드를 업데이트하는 기준 메서드입니다. 이를 사용하려면 업데이트할 엔터티의 스키마 이름, 업데이트할 엔터티의 기본 키 필드, 업데이트할 레코드의 GUID 및 업데이트할 데이터 페이로드 배열 정보를 알고 있어야 합니다.

CrmServiceClient crmSvc = new CrmServiceClient(new System.Net.NetworkCredential("<UserName>", "<Password>", “<Domain>”),"<Server>", "<Port>", "<OrgName>");

// Verify that you are connected
if (crmSvc != null && crmSvc.IsReady)
{
    //Display the CRM version number and org name that you are connected to
    Console.WriteLine("Connected to CRM! (Version: {0}; Org: {1}", 
    crmSvc.ConnectedOrgVersion, crmSvc.ConnectedOrgUniqueName);

    // Update the account record
    Dictionary<string, CrmDataTypeWrapper> updateData = new Dictionary<string, CrmDataTypeWrapper>();
    updateData.Add("name", new CrmDataTypeWrapper("Updated Sample Account Name", CrmFieldType.String));
    updateData.Add("address1_city", new CrmDataTypeWrapper("Boston", CrmFieldType.String));
    updateData.Add("telephone1", new CrmDataTypeWrapper("555-0161", CrmFieldType.String)); 
    bool updateAccountStatus = crmSvc.UpdateEntity("account","accountid",_accountId,updateData);

    // Validate if the account record was updated successfully, and then display the updated information
    if (updateAccountStatus == true)
    {
        Console.WriteLine("Updated the account details as follows:");
        Dictionary<string, object> data = crmSvc.GetEntityDataById("account", accountId, null);
        foreach (var pair in data)
        {
            if ((pair.Key == "name") || (pair.Key == "address1_city") || (pair.Key == "telephone1"))
            {
                Console.WriteLine(pair.Key.ToUpper() + ": " + pair.Value);
            }
        }
    }
}
else
{
    // Display the last error.
    Console.WriteLine("An error occurred: {0}", crmSvc.LastCrmError);

    // Display the last exception message if any.
    Console.WriteLine(crmSvc.LastCrmException.Message);
    Console.WriteLine(crmSvc.LastCrmException.Source);
    Console.WriteLine(crmSvc.LastCrmException.StackTrace);

    return;
}

UpdateStateAndStatusForEntity

이 메서드는 Dynamics 365에서 레코드의 상태를 설정하는 데 사용됩니다. 예를 들어, 모든 레코드는 일반적으로 "시작됨" 상태에서 시작합니다. 상태 이름은 레코드 종류 또는 개발자 선택에 따라 변경됩니다. 예를 들어 견적에는 초안, 활성, 종료, 성공, 실패와 같은 몇 가지 가능한 상태(status) 및 상태(state)가 있습니다.

SDK 다운로드 패키지의 SDK\SampleCode\CS\HelperCode 폴더에 있는 OptionSets.cs 파일을 사용하여 Dynamics 365의 다양한 엔터티에 대해 사용할 수 있는 전역 옵션 집합을 보고 사용할 수 있습니다. 전역 옵션 집합에 대한 자세한 내용은 전역 옵션 집합 사용자 지정을 참조하십시오.

엔터티 상태를 업데이트하려면 대상 상태(state) 및 상태(status), 이름 또는 ID를 알고 있어야 합니다. 이름과 ID는 엔터티에 대한 메타데이터를 쿼리하고 상태(status) 및 상태(state) 필드를 보고 찾을 수 있습니다. 이 예제에서는 거래처 레코드의 상태를 비활성으로 설정하는 방법을 보여 줍니다.

CrmServiceClient crmSvc = new CrmServiceClient(new System.Net.NetworkCredential("<UserName>", "<Password>", “<Domain>”),"<Server>", "<Port>", "<OrgName>");

// Verify that you are connected
if (crmSvc != null && crmSvc.IsReady)
{ 
    //Display the CRM version number and org name that you are connected to
    Console.WriteLine("Connected to CRM! (Version: {0}; Org: {1}",
    crmSvc.ConnectedOrgVersion, crmSvc.ConnectedOrgUniqueName);

    // Here are the state and status code values
    // statecode = 1 ( Inactive ) 
    // statuscode = 2 ( Inactive ) 

    crmSvc.UpdateStateAndStatusForEntity("account" , accountId , 1 , 2 );

    // the same command using the second form of the method
    crmSvc.UpdateStateAndStatusForEntity("account" , accountId , "Inactive" , "Inactive");
}
else
{
    // Display the last error.
    Console.WriteLine("An error occurred: {0}", crmSvc.LastCrmError);

    // Display the last exception message if any.
    Console.WriteLine(crmSvc.LastCrmException.Message);
    Console.WriteLine(crmSvc.LastCrmException.Source);
    Console.WriteLine(crmSvc.LastCrmException.StackTrace);

    return;
}

참고 항목

샘플: XRM 도구 API 빠른 시작
XRM 도구를 사용하여 CRM에 연결
XRM 도구를 사용하여 CRM에서 작업 실행
특성 메타데이터에 대한 작업

© 2017 Microsoft. All rights reserved. 저작권 정보