dynamics-crm-2011

dynamics crm 2011 - "EntityState se debe establecer en nulo, creado(para crear mensaje) o cambiado(para actualizar mensaje)" al intentar actualizar una entidad en CRM 2011



dynamics-crm-2011 (5)

Esto funcionó para mí:

recordToUpdate.EntityState = EntityState.Changed;

(recordToUpdate es una entidad que se actualizará)

Estoy usando el siguiente código para actualizar una entidad.

Service.Update(_policy);

donde la política es una clase generada usando CrmSvcUtil.exe

public partial class new_policy : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged

Recupero las políticas usando LINQ, luego actualizo un atributo (una EntityReference) y luego intento la actualización

Cuando este código se ejecuta, aparece el siguiente mensaje de error:

EntityState se debe establecer en nulo, Creado (para Crear mensaje) o Modificado (para Actualizar mensaje)

Hay otras entidades generadas de la misma manera que puedo actualizar.

Lo intenté

_policy.EntityState = EntityState.Changed

pero luego me sale un mensaje diciendo

La entidad es de solo lectura y la propiedad ''EntityState'' no se puede modificar. Utilice el contexto para actualizar la entidad en su lugar.

¿Alguien sabe qué está causando esto?


Para evitar el problema, simplemente puede usar update-helper-objects en lugar de usar el registro recuperado:

var policyUpdater = new Policy { Id = _policy.Id, FieldToUpdate = "newValue" }; service.Update(policyUpdater);

Nota: las propiedades del objeto update-helper que no están establecidas simplemente se ignoran. La actualización no establecerá los campos de registro correspondientes en nulo


Resulta que fue un problema con mi consulta linq que estaba recuperando la entidad en primer lugar. Cuando reemplacé esto con una expresión de consulta funcionó bien.

¡Es hora de repasar mi linq!



Yo tuve el mismo problema. Cambié de usar

context.Update(object)

a

context.UpdateObject(object)

Y funcionó.