次の方法で共有


サンプル: オペレーションの更新プログラムおよび削除でオプティミスティック同時実行を使用する

公開日: 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 Packages の管理] をクリックします。

  4. Microsoft Dynamics 365 (オンライン) のプレビュー組織を使用する場合、ダイアログの上部にあるドロップダウン リストで、[プレリリースを含める] をクリックします。 それ以外の場合は、[安定版のみ] をクリックします。

  5. ダイアログを閉じます。

ソリューションを作成するとき、必要なパッケージは自動的にインストールされます。

サンプルの実行

  1. Visual Studio で、F5 を押してサンプルを作成および実行します。 インストールされる NuGet パッケージのライセンスを許諾するよう求められます。

  2. Microsoft Dynamics 365 管理コードのサンプルのいずれかを実行したことがない場合、コードを実行するための情報を入力する必要があります。 それ以外の場合は、以前設定した Dynamics 365 サーバーのいずれかの番号を入力します。

    プロンプト

    説明

    Dynamics 365 サーバー名およびポート [crm.dynamics.com] を入力する

    Microsoft Dynamics 365 Server の名前を入力します。 北米での既定では Microsoft Dynamics 365 (オンライン) (crm.dynamics.com) です。

    例:
    crm5.dynamics.com

    組織またはインターネット プロトコル (http または https) の名前は含めません。 これに対して後でメッセージが表示されます。

    この組織は Microsoft Online Services で設定されていますか (y/n) [n]

    この組織が Microsoft Online Services で設定された組織の場合は y を入力します。 その他の場合、n を入力します。

    domain\username を入力してください

    Microsoft Dynamics 365 (オンライン) の場合は、Microsoft アカウント を入力します。 例: someone@mydomain.onmicrosoft.com。

    パスワードを入力してください

    パスワードを入力します。 後で再利用できるように、パスワードは安全に Windows Credential Manager に保管されます。

    組織番号を指定してください (1-n) [1]

    組織の一覧から、所属する組織に該当する番号を入力します。 既定値は 1 です。これは一覧の最初の組織を示します。

  3. このサンプルは、このサンプルの概要 に説明されている操作を実行しますが、追加のオプションの実行を求められることがあります。

  4. サンプルが完了したら、[Enter] を押して、コンソール ウィンドウを閉じます。

関連項目

オプティミスティック同時実行を使用してデータ損失の見込みを削減する

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権