【问题标题】:Unable to update custom entity record无法更新自定义实体记录
【发布时间】:2016-03-04 06:42:57
【问题描述】:

我在使用 CRM Online 和自定义实体时遇到了问题,我无法更新自定义实体中的任何记录。除了无法更新记录之外,我也无法删除记录,这没什么大不了的,但还是有点奇怪。

当我尝试更新记录时,出现以下异常:

The entity cannot be updated because it is read-only.

最初我认为这是因为我没有查询正确的实体,但是当我执行以下操作时能够确认我正在编辑正确的实体:

var record = new jol_custom_orders();
record.jol_estimated_ship_date = DateTime.Parse("12/15/2015");
record.jol_purchase_order_id = new EntityReference(SalesOrder.EntityLogicalName, order.Id);
record.jol_account = new EntityReference(Account.EntityLogicalName, CustomerId);
var id = Service.Create(record); 

当我直接从 crm 获取 id 并尝试更新相同的记录时,这就是我遇到问题的地方。

我正在尝试执行以下操作来更新记录:

var record = (jol_custom_orders)Service.Retrieve(jol_custom_orders.EntityLogicalName, id, new ColumnSet(true));
record.jol_estimated_ship_date = shipDate;
record.jol_estimated_ship_date = estimatedShipDate;
Service.Update(record);

那么我到底错过了什么,因为我真的不知道为什么这个记录现在是只读的。

编辑

我不确定原因,但我创建了另一个自定义实体,它的字段与导致我出现问题的字段相同,并且我能够完成所有的 crud 操作。我对此感到有些困惑,因为这根本没有意义。

【问题讨论】:

  • 您确定您的用户有权更新/删除记录吗?
  • 据我所知是的。当我创建记录时,我是以自己的身份创建记录,而我的用户既是定制员又是管理员

标签: dynamics-crm-online dynamics-crm-2015


【解决方案1】:

听起来您遇到了与此海报类似的问题:"EntityState must be set to null, Created (for Create message) or Changed (for Update message)" when attempting to update an entity in CRM 2011

我发现最好的答案实际上是 user764754 给出的一个,有 5 个赞成票(目前)。尝试设置辅助对象的方法,您应该可以解决这个问题(也就是使用以下代码)

var newRecord = new jol_custom_orders(){
  Id = id,
  jol_estimated_ship_date = estimatedShipDate
};
Service.Update(newRecord);

【讨论】:

  • 这是一条处于已完成/已取消状态的活动记录吗?如果是这样,您需要重新打开它才能对其进行编辑
  • 据我所知,它不是一个活动,它只是一个简单的自定义实体,但是我现在不能 100% 确定你提到了这一点。
  • 您可以在实体自定义中进行检查 - 有一个复选框指示它是否是一个活动(“定义为活动实体”)
  • 不,根据自定义,这不是一项活动
  • 对象没有被禁用?
【解决方案2】:

通常当您无法对实体执行标准 CRM CRUD 操作时,该问题是由同步插件或同步工作流引起的,导致异常并导致事务回滚。我会仔细检查您已注册的任何自定义插件以及您拥有的同步工作流,以查看您的自定义实体上是否有任何触发可能导致异常并回滚事务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2015-11-08
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多