使用C#

时间:2017-01-03 21:07:31

标签: c# entity dynamics-crm metadata

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

1 个答案:

答案 0 :(得分:0)

你的措辞很混乱。这是一个我认为涵盖你想要实现的目标的例子。

创建联系人,然后创建一个任务,其中填写了联系人的相关字段。

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中的特定记录,例如表格中的一行。

如果您使用服务调用创建了记录,则会返回您的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

  

始终使用实体架构名称(SchemaName)来引用自定义   代码和查询中的实体。不要使用对象类型代码(也是   称为实体类型)代码,因为其整数值不同   不同组织中的自定义实体。

元数据服务

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

进一步阅读:The metadata and data models in Microsoft Dynamics 365