插件预操作创建 - 更新字段错误

时间:2014-02-11 00:23:00

标签: dynamics-crm-2011 dynamics-crm

我的插件触发实体X上的预创建操作。当尝试使用以下代码更新实体X上的字段时,我收到错误:

trEntity = (Entity)context.InputParameters["Target"];
trGuid = (Guid)trEntity.Id;

tr = (Entity)service.Retrieve("EntityX", trGuid,
                    new ColumnSet(new string[] { "field_a", "field_b" }));


tr["field_a"] = null;
service.Update(tr);

我得到的错误是: 实体X,ID = 11505683-2292-b537-e311-143710e56fb7不存在

2 个答案:

答案 0 :(得分:11)

由于您在Pre-Create,因此该实体尚未存在于数据库中。

您无需在Pre事件中明确调用Update。您只需更新Target实体(在您的情况下为trEntity),您所做的更改将与Create操作一起保存。 Target实体是即将创建的实际实体,因此可以直接在Pre事件中的Target上更新字段。

trEntity = (Entity)context.InputParameters["Target"];
trEntity["field_a"] = null;

答案 1 :(得分:0)

您是如何创建服务的? 当您尝试更新当前事务之外的记录时也会发生这种情况,即使用手动创建的OrganizationServiceProxy而不是使用IOrganizationServiceFactory.CreateOrganizationService提供的记录。