샘플: 업데이트 및 삭제 작업에 낙관적 동시 실행 사용

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

엔터티 레코드의 업데이트나 삭제를 수행할 때 잠재적 데이터 손실을 방지하기 위해 Microsoft Dynamics CRM Online 2015 업데이트 1에서 도입된 낙관적 동시 실행 기능을 사용하는 방법을 보여줍니다. 사용되는 기술에 대한 자세한 내용은 낙관적 동시 실행을 사용하여 데이터 손실 가능성 줄이기 항목을 참조하십시오.

전체 샘플은 MSDN: 업데이트 및 삭제 작업에 낙관적 동시 실행 사용에서 다운로드할 수 있습니다.

필수 조건

이 샘플을 실행하려면 다음이 필요합니다.

  • Microsoft Dynamics CRM Online 2016 업데이트 또는 Microsoft Dynamics 365 온-프레미스 조직에 액세스합니다.

  • 개발 컴퓨터에 설치된 Microsoft .NET Framework 4.5.2입니다.

  • 샘플을 빌드할 때 자동으로 다운로드할 필수 NuGet 패키지를 위한 활성 인터넷 연결.

이 항목의 내용

이 샘플의 기능

NuGet 패키지 설치

샘플 실행

이 샘플의 기능

이 샘플은 업데이트 및 삭제 작업에 낙관적 동시 실행을 사용하는 방법을 보여줍니다. 전체 샘플의 핵심 섹션만 표시하는 코드 조각이 나와 있습니다. 이 샘플은 업데이트 및 삭제 요청 시 동시 실행 동작을 설정하므로 서버는 이러한 작업을 위해 거래처 레코드의 특정 버전을 확인합니다. 행 버전이 다른 레코드를 사용하여 업데이트 또는 삭제 작업을 시도하는 경우 예외가 발생합니다. 그렇지 않으면 작업이 성공적으로 수행됩니다.


// Connect to the Organization service. 
// The using statement assures that the service proxy will be properly disposed.
using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,
    serverConfig.Credentials, serverConfig.DeviceCredentials))
{
    CreateRequiredRecords();

    // Retrieve an account.
    var account = _serviceProxy.Retrieve("account", _accountId, new ColumnSet("name","creditlimit"));
    Console.WriteLine("\tThe row version of the created account is {0}", account.RowVersion);

    if (account != null)
    {
        // Create an in-memory account object from the retrieved account.
        Entity updatedAccount = new Entity()
        {
            LogicalName = account.LogicalName,
            Id = account.Id,
            RowVersion = account.RowVersion
        };

        // Update just the credit limit.
        updatedAccount["creditlimit"] = new Money(1000000);

        // Set the request's concurrency behavour to check for a row version match.
        UpdateRequest accountUpdate = new UpdateRequest()
        {
            Target = updatedAccount,
            ConcurrencyBehavior = ConcurrencyBehavior.IfRowVersionMatches
        };

        // Do the update.
        UpdateResponse accountUpdateResponse = (UpdateResponse) _serviceProxy.Execute(accountUpdate);
        Console.WriteLine("Account '{0}' updated with a credit limit of {1}.", account["name"], 
            ((Money)updatedAccount["creditlimit"]).Value);

        account = _serviceProxy.Retrieve("account", updatedAccount.Id, new ColumnSet());
        Console.WriteLine("\tThe row version of the updated account is {0}", account.RowVersion);
        _accountRowVersion = account.RowVersion;
    }

    DeleteRequiredRecords(promptforDelete);
}

// Delete the account record only if the row version matches.
EntityReference accountToDelete = new EntityReference("account", _accountId);
accountToDelete.RowVersion = _accountRowVersion;

DeleteRequest request = new DeleteRequest()
{
    Target = accountToDelete,
    ConcurrencyBehavior = ConcurrencyBehavior.IfRowVersionMatches
};

_serviceProxy.Execute(request);

NuGet 패키지 설치

  1. 이 샘플을 다운로드하고 파일 압축을 풉니다.

  2. C# 폴더로 이동하여 Microsoft Visual Studio에서 솔루션 파일을 엽니다.

  3. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리를 클릭합니다.

  4. 대화 상자 상단의 드롭다운 목록에서 Microsoft Dynamics 365(온라인) 미리 보기 조직을 사용 중인 경우 Include Prerelease를 클릭합니다. 그렇지 않으면 Stable Only를 클릭합니다.

  5. 대화 상자를 닫습니다.

필수 패키지는 솔루션을 빌드할 때 자동으로 설치됩니다.

샘플 실행

  1. Visual Studio에서 F5키를 눌러 샘플을 빌드하고 실행합니다. 설치할 NuGet 패키지의 라이선스에 동의하는지 묻는 메시지가 표시됩니다.

  2. 이전에 Microsoft Dynamics 365 관리 코드 샘플 중 하나를 실행하지 않은 경우 코드를 실행할 정보를 입력해야 합니다. 그렇지 않은 경우 이전에 설정한 Dynamics 365 서버 중 하나에 대한 번호를 입력합니다.

    프롬프트

    설명

    Dynamics 365 서버 이름과 포트[crm.dynamics.com]를 입력합니다.

    Microsoft Dynamics 365 서버의 이름을 입력합니다. 북아메리카에서 기본값은 Microsoft Dynamics 365(온라인)(crm.dynamics.com) 입니다.

    예:
    crm5.dynamics.com

    사용자의 조직 또는 인터넷 프로토콜 (http 또는 https)의 이름을 포함하지 마십시오. 나중에 해당 메시지가 표시됩니다.

    이 조직이 Microsoft Online Services에서 프로비전되었습니까? (y/n) [n]

    Microsoft Online Services 프로비전된 조직이면 y를 입력합니다. 그렇지 않으면 n을 입력합니다.

    도메인\사용자 이름을 입력합니다.

    Microsoft Dynamics 365(온라인)의 경우 Microsoft 계정를 입력합니다. 예: someone@mydomain.onmicrosoft.com.

    암호를 입력합니다.

    암호를 입력합니다. 암호는 나중에 다시 사용할 수 있도록 Windows 자격 증명 관리자에 안전하게 저장됩니다.

    조직 번호 지정(1-n) [1]

    표시된 조직 목록에서 해당 번호를 입력합니다. 기본값은 1이며, 목록에서 첫 번째 조직을 나타냅니다.

  3. 샘플은 이 샘플의 기능에서 설명하는 작업을 수행하고 추가 옵션을 묻는 메시지가 나타날 수 있습니다.

  4. 샘플이 완료되면 ENTER 키를 눌러 콘솔 창을 닫습니다.

참고 항목

낙관적 동시 실행을 사용하여 데이터 손실 가능성 줄이기

Microsoft Dynamics 365

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