5

我的插件在实体 X 上的 Pre Create 操作上触发。当尝试使用以下代码更新实体 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);

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

4

2 回答 2

13

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

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

trEntity = (Entity)context.InputParameters["Target"];
trEntity["field_a"] = null;
于 2014-02-11T01:15:37.830 回答
0

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

于 2014-02-11T01:22:10.360 回答