分享方式:


使用早期繫結實體類別,進行建立、更新和刪除

 

發佈日期: 2016年11月

適用對象: Dynamics CRM 2015

在 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新,可以實體資料模型和早期繫結實體類別 (由程式碼產生工具 CrmSvcUtil 所建立),來處理商務資料。 不論是否搭配組織服務內容,都可以使用這些早期繫結類別,但最佳作法是使用產生的組織服務內容類別。 內容嘗試有效管理關聯,但是,手寫程式碼通常更有效。

備註

以特定順序進行記錄更新。 首先,處理主要實體,然後處理相關實體。 如果主要實體變更查詢或相關實體屬性,然後相關實體更新相同屬性,相關實體值會保留。 一般來說,查詢屬性值以及在相同關聯中的對等項目 RelatedEntities (或導覽屬性) 無法同時使用。

本主題內容

使用 OrganizationServiceContext 類別

使用早期繫結實體類別以及 OrganizationServiceContext 類別,建立新的實體記錄

使用早期繫結實體類別以及 OrganizationServiceContext 類別,更新實體記錄

使用早期繫結實體類別以及 OrganizationServiceContext 類別,刪除實體記錄

使用早期繫結實體類別,而不使用內容物件

使用 OrganizationServiceContext 類別

程式碼產生工具建立且從 OrganizationServiceContext 繼承的組織服務內容類別是用來追蹤資料變更。 內容會追蹤實體類型執行個體 (表示 Microsoft Dynamics 365 資料) 的物件。 您可以在組織服務內容中修改、建立和刪除物件,而且 Microsoft Dynamics 365 會追蹤您對這些物件的變更。 當呼叫 OrganizationServiceContext.SaveChanges 方法時,Microsoft Dynamics 365 會產生並執行命令,而這些命令則對 Microsoft Dynamics 365 資料執行同等插入、更新或刪除陳述式。

當使用早期繫結實體類別時,請使用實體名稱與屬性結構描述名稱,來指定要使用的實體或屬性。 屬性結構描述名稱是在 EntityMetadata.SchemaNameAttributeMetadata.SchemaName 中定義,您也可以使用程式碼產生的檔案中顯示的類別和屬性名稱。下列範例顯示如何指派值給新連絡人執行個體的電子郵件屬性。

Contact contact = new Contact();contact.EMailAddress1 = “sonny@contoso.com”;

如需顯示如何使用早期繫結實體類別執行基本資料庫動作的完整程式碼範例,請參閱範例:建立、擷取、更新和刪除紀錄 (早期繫結)

使用早期繫結實體類別以及 OrganizationServiceContext 類別,建立新的實體記錄

當您希望使用實體資料模型將資料插入 Microsoft Dynamics 365 時,必須建立實體類型執行個體,然後將物件新增至組織服務內容。 組織服務內容必須追蹤物件,才能將物件儲存至 Microsoft Dynamics 365。

建立新實體記錄時,使用 OrganizationServiceContext.AddObject 方法將物件新增至組織服務內容。

下列範例顯示如何使用實體資料模型,具現化並儲存新的連絡人記錄。 它也示範如何存取自訂屬性。

OrganizationServiceContext orgContext =new OrganizationServiceContext(_serviceProxy);
Contact contact = new Contact()   
 {
   FirstName = "Charles",
   LastName = "Brown",
   Address1_Line1 = "123 Main St.",
   Address1_City = "Des Moines",
   Address1_StateOrProvince = "IA",
   Address1_PostalCode = "21254",
   new_twittername = "Chuck",
   Telephone1 = "123-234-5678"
 }; 
orgContext.AddObject(contact);orgContext.SaveChanges();

在新增物件至內容之後,以及在呼叫 OrganizationServiceContext.SaveChanges 方法之前,內容會產生新物件的識別碼。 若對 SaveChangesResults 資料的任何更新失敗,則會從 Microsoft Dynamics 365 方法擲回包含 SaveChanges 的例外狀況。

使用早期繫結實體類別以及 OrganizationServiceContext 類別,更新實體記錄

Microsoft Dynamics 365 會追蹤附加至組織服務內容之物件的變更。 若要修改現有實體記錄,必須先將物件新增至內容。 若要將物件新增至內容,必須先從 Microsoft Dynamics 365 擷取實體記錄,然後使用 OrganizationServiceContext.Attach 方法將物件新增至內容。 一旦內容追蹤物件,您可以設定實體的屬性來更新記錄。

下列範例顯示如何使用早期繫結類別來更新客戶屬性。

Account.EMailAddress1 = “Contoso-WebMaster@contoso.com”;

下列範例顯示如何刪除屬性值。

Account.EMailAddress1 = null;

每個實體有兩個部分方法,名為 OnPropertyChangingOnPropertyChanged。 這些方法是在屬性 setter 中呼叫。 您可以透過部分類別擴充這些方法,插入自訂商務邏輯。

使用早期繫結實體類別以及 OrganizationServiceContext 類別,刪除實體記錄

若要刪除實體記錄,組織服務內容必須追蹤物件。 一旦物件在內容上,您可以使用 OrganizationServiceContext.DeleteObject 方法將內容上的物件標記為刪除。 請注意,等到呼叫 OrganizationServiceContext.SaveChanges 方法之後,在 Microsoft Dynamics 365 中的實體記錄才會刪除。

使用早期繫結實體類別,而不使用內容物件

如果不要建立內容物件,您可以使用早期繫結實體類別,而不建立組織服務內容物件。OrganizationServiceProxy 類別包含 OrganizationServiceProxy.Create 方法,可用來儲存實體記錄變更至 Microsoft Dynamics 365。

下列範例顯示如何在不建立組織服務內容物件的情況下使用早期繫結實體類別。OrganizationServiceProxy.Create 方法會傳回指派給新建立實體記錄的 GUID 識別碼。

Contact contact = new Contact()
 {
   FirstName = "Charles",
   LastName = "Brown",
   Address1_Line1 = "123 Main St.",
   Address1_City = "Des Moines",
   Address1_StateOrProvince = "IA",
   Address1_PostalCode = "21254",
   Telephone1 = "123-234-5678" 
  };
 _contactId = _serviceProxy.Create(contact); 

若要更新在 Microsoft Dynamics 365 的實體記錄,您必須取得要更新的資料,進行必要的變更,然後使用 OrganizationServiceProxy.Update 方法將這些變更認可至 Microsoft Dynamics 365。 若要擷取實體記錄,您可以使用 OrganizationServiceProxy.Retrieve 方法進行單一物件擷取,或 OrganizationServiceProxy.RetrieveMultiple 方法擷取多個物件。 若要刪除實體記錄,您可以使用 OrganizationServiceProxy.Delete 方法。

另請參閱

在程式碼中使用早期繫結實體類別
使用早期繫結實體類別新增或更新相關記錄之間的關聯
使用程式碼產生工具 (CrmSvcUtil.exe) 建立早期繫結實體類別
範例:建立、擷取、更新和刪除紀錄 (早期繫結)

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