使用 C# 使用对象类型代码设置值实体 Regardingobjectid 字段

Set Value Entity Regardingobjectid Field With Object Type Code Using C#

我有一个实体。该实体的类型是 activity。我想设置这个实体的 regardingobjectid 字段值,然后我想创建记录。每个记录的 regardingobjectid 字段可以显示不同的实体。即我设置这个字段 "a" 实体,然后我可以在下一条记录上用 "b" 实体设置这个字段。我只有 "a" 和 "b" 实体的逻辑名称。我使用逻辑名称获取对象类型代码。我使用这个对象类型代码获取实体元数据。我如何使用 C# 从实体元数据或对象类型代码中获取实体 ID。如果我采用实体 ID(a 或 b),然后将其设置为 activity 类型实体中的 regardingobjectid。

你的措辞很混乱。这是一个示例,我认为它涵盖了您要实现的目标。

创建一个联系人,然后创建一个任务,并在相关字段中填充该联系人。

Entity contact = new Entity("contact");
contact["lastname"] = "Test Contact";
Guid contactId = service.Create(contact);

Entity task = new Entity("task");
task["subject"] = "Test Task";
task["regardingobjectid"] = new EntityReference("contact", contactId);
service.Create(task);

您也可以像这样更新现有任务:

Entity task2 = new Entity("task");
task2.Id = new Guid(...);
task2["regardingobjectid"] = new EntityReference("contact", contactId);
service.Create(task);

您可以通过多种方式获取记录 ID(用于此处 new Guid(...) 或此处 contactId)。

记录 ID 指的是 CRM 中的特定记录,例如table 中的一行。

如果您使用服务调用创建了记录,则会将 ID 返回给您 立即。

Entity contact = new Entity("contact");
...
Guid recordId = service.Create(contact);

您可以从CRM查询记录id。延伸阅读:IOrganizationService.RetrieveMultiple.

Guid recordId = Service.RetrieveMultiple(new QueryExpression("contact")).Entities.First().Id;

如果您有一个从 CRM 返回的 Entity 对象,您总是从 Id 属性.

中获取其记录 ID
Entity contact = new Entity("contact");
Guid recordId = contact.Id;

旁注

对象类型代码(也称为实体类型代码)

这通常不用于任何用途,它是一种用途很少的数据 - 我很少发现它有用或使用它。

类型代码可用于指代实体的类型,例如联系人、案例等。但是,最好使用实体模式名称,例如contactincident

还值得记住的是,它并不可靠 - 特别是在自定义实体的情况下。

ObjectTypeCode Property

Always use the entity schema name (SchemaName) to refer to a custom entity in code and queries. Do not use the object type code (also referred to as entity type) code because its integer value varies for custom entities in different organizations.

元数据服务

您可以使用元数据服务来接收(和操作)有关系统配置的信息。例如。您拥有哪些实体以及这些实体拥有哪些字段。但是,它不会为您提供有关特定记录的信息。

延伸阅读:The metadata and data models in Microsoft Dynamics 365.