我遇到了CRM联机和自定义实体的问题,其中我无法更新自定义实体中的任何记录。除了无法更新记录之外,我也无法删除记录,这不是什么大不了的事,但还是有点奇怪。
当我试图更新记录时,我会得到以下异常:
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操作。我对此有点困惑,因为这毫无意义。
发布于 2015-11-30 15:26:58
听起来你有一个类似于这个海报的问题:"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);发布于 2015-12-01 15:15:27
通常,当您无法对实体执行标准的CRM CRUD操作时,该问题是由同步插件或同步工作流引起的,导致异常并导致事务回滚。我会再次检查您注册的任何自定义插件,以及您所拥有的同步工作流,以查看在您的自定义实体上是否有任何可能导致异常并回滚事务的触发器。
https://stackoverflow.com/questions/34001837
复制相似问题