範例:搭配更新及刪除作業使用開放式並行存取
發行︰ 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 套件
下載此範例並擷取檔案。
瀏覽至 C# 資料夾,然後開啟 Microsoft Visual Studio 中的解決方案檔案。
在 [方案總管] 中,以滑鼠右鍵按一下專案並按一下 [管理 NuGet 套件]。
如果您使用 Microsoft Dynamics 365 (線上) 預覽組織,在對話方塊上方的下拉式清單中按一下 [包含發行前版本]。 否則按一下 [僅穩定版]。
關閉對話方塊。
當您建置解決方案時,會自動安裝必要套件。
執行範例
在 Visual Studio 中按下 F5 以建置和執行範例。 系統將會提示您接受要安裝之 NuGet 套件的授權。
如果您之前沒有執行其中一個 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,表示清單中的第一個組織。
範例會執行 此範例的作用 中說明的伺服器作業,也會提示其他選項。
當範例完成時,請按 ENTER 關閉主控台視窗。
另請參閱
Microsoft Dynamics 365
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權