XRM 도구를 사용하여 데이터 업데이트
게시 날짜: 2016년 11월
적용 대상: Dynamics CRM 2015
Microsoft Dynamics 365: UpdateEntity 및 UpdateStateAndStatusForEntity의 데이터를 업데이트하기 위해 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. 저작권 정보