使用早期绑定的实体类进行创建、更新和删除
发布日期: 2017年1月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online
在 Microsoft Dynamics 365(在线或本地) 中,您可以使用实体数据模型和由代码生成工具 (CrmSvcUtil) 创建的以前绑定的实体类来处理业务数据。 使用这些以前绑定的类时,您可以带有或不带组织服务上下文,但最佳做法是使用生成的组织服务上下文类。 上下文尝试有效地管理关系,但手写代码通常更有效。
备注
记录是以特定顺序更新的。 首先处理主要实体,然后处理相关实体。 如果主要实体针对查找或相关实体属性进行了更改,然后相关实体更新同一属性,则相关实体值会保留。 通常,不应该同时使用针对同一关系的查找属性值和 RelatedEntities(或导航属性)中的对应值。
本主题内容
使用 OrganizationServiceContext 类
使用以前绑定的实体类和 OrganizationServiceContext 类创建新实体记录
使用以前绑定的实体类和 OrganizationServiceContext 类更新实体记录
使用以前绑定的实体类和 OrganizationServiceContext 类删除实体记录
无上下文对象的情况下使用以前绑定的实体类
使用 OrganizationServiceContext 类
代码生成工具创建的和从 OrganizationServiceContext 继承的组织服务上下文类被用来跟踪数据更改。 上下文跟踪表示 Microsoft Dynamics 365 中数据的实体类型的实例对象。 您可以在组织服务上下文中修改、创建和删除对象,Microsoft Dynamics 365 会跟踪您对这些对象所做的更改。 调用 OrganizationServiceContext.SaveChanges 方法时,Microsoft Dynamics 365 会生成并执行命令,以针对 Microsoft Dynamics 365 中的数据执行对应的插入、更新或删除语句。
使用以前绑定的实体类时,您使用实体名称和属性架构名称来指定要使用的实体或属性。 属性架构名称在 EntityMetadata.SchemaName 和 AttributeMetadata.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 方法之前,上下文会为新对象生成一个 ID。 如果任何 Microsoft Dynamics 365 数据更新失败,则会从 SaveChanges 方法抛出包含 SaveChangesResults 的异常。
使用以前绑定的实体类和 OrganizationServiceContext 类更新实体记录
Microsoft Dynamics 365 会跟踪对附加到组织服务上下文的对象的更改。 若要修改现有实体记录,您必须先将该对象添加到上下文。 若要将对象添加到上下文,您必须先从 Microsoft Dynamics 365 检索实体记录,然后使用 OrganizationServiceContext.Attach 方法将该对象添加到上下文。 一旦上下文跟踪到该对象,您就可以设置实体属性来更新记录。
以下示例演示如何使用以前绑定的类更新客户属性。
Account.EMailAddress1 = “Contoso-WebMaster@contoso.com”;
以下示例演示如何删除属性值。
Account.EMailAddress1 = null;
每个实体都有称为 OnPropertyChanging 和 OnPropertyChanged 的两部分方法。 这些方法在属性 setter 中调用。 您可以使用部分类扩展这些方法,以插入自定义业务逻辑。
使用以前绑定的实体类和 OrganizationServiceContext 类删除实体记录
若要删除实体记录,组织服务上下文必须跟踪到该对象。 一旦该对象出现在上下文中,您就可以使用 OrganizationServiceContext.DeleteObject 方法在上下文中标记该对象,以便删除。 请注意,在调用 OrganizationServiceContext.SaveChanges 方法之前,Microsoft Dynamics 365 中的实体记录不会被删除。
无上下文对象的情况下使用以前绑定的实体类
如果不想创建上下文对象,您可以不创建组织服务上下文对象来使用以前绑定的实体类。OrganizationServiceProxy 类包括 OrganizationServiceProxy。Create 方法可以将实体记录更改保存到 Microsoft Dynamics 365。
以下示例演示如何在不创建组织服务上下文对象的情况下使用以前绑定的实体类。OrganizationServiceProxy。Create 方法返回分配给新创建的实体记录的 GUID ID。
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。 致力于 Microsoft Dynamics 365某些更改的Update 方法。 若要检索实体记录,您可以使用 OrganizationServiceProxy。 单一对象检索或OrganizationServiceProxy的Retrieve方法。 检索多个对象的RetrieveMultiple 方法。 若要删除实体记录,您可以使用 OrganizationServiceProxy。Delete 方法。
另请参阅
在代码中使用早期绑定实体类
使用早期绑定实体类在相关记录之间添加关联或更新关联
使用代码生成工具 (CrmSvcUtil.exe) 创建早期绑定实体类
示例:创建、检索、更新和删除记录(早期绑定)
Microsoft Dynamics 365
© 2017 Microsoft。 保留所有权利。 版权