我的插件触发实体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不存在
答案 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提供的记录。