共用方式為


範例:搭配更新及刪除作業使用開放式並行存取

發行︰ 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 (線上) 預覽組織,在對話方塊上方的下拉式清單中按一下 [包含發行前版本]。 否則按一下 [僅穩定版]。

  5. 關閉對話方塊。

當您建置解決方案時,會自動安裝必要套件。

執行範例

  1. 在 Visual Studio 中按下 F5 以建置和執行範例。 系統將會提示您接受要安裝之 NuGet 套件的授權。

  2. 如果您之前沒有執行其中一個 Microsoft Dynamics 365 Managed 程式碼範例,您情形輸入資訊才能執行程式碼。 否則,輸入您之前設定的其中一個 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

    輸入 domain\username

    如為 Microsoft Dynamics 365 (線上),請輸入您的 Microsoft 帳號。 例如:someone@mydomain.onmicrosoft.com。

    輸入密碼

    請輸入您的密碼。 您的密碼會安全地儲存在 Windows 認證管理員中,供日後重複使用。

    指定組織編號 (1-n) [1]

    從組織清單中找到您所屬的組織,輸入對應的數字。 預設為 1,表示清單中的第一個組織。

  3. 範例會執行 此範例的作用 中說明的伺服器作業,也會提示其他選項。

  4. 當範例完成時,請按 ENTER 關閉主控台視窗。

另請參閱

使用開放式並行存取,減少可能資料遺失

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權