Подтвердить что ты не робот

"EntityState должен быть установлен в значение null," Создано "(для" Создать сообщение ") или" Изменено (для сообщения "Обновление" ) при попытке обновления объекта в CRM 2011

Я использую следующий код для обновления объекта.

Service.Update(_policy);

где политика - это класс, сгенерированный с использованием CrmSvcUtil.exe

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

Я извлекаю политики с помощью LINQ, затем обновляю один атрибут (EntityReference), а затем пытаюсь обновить

При запуске этого кода появляется следующее сообщение об ошибке:

EntityState должен быть установлен в null, Created (для создания сообщения) или Изменено (для сообщения "Обновить" )

Существуют и другие объекты, сгенерированные таким же образом, что я могу обновить.

Я пробовал

_policy.EntityState = EntityState.Changed

но затем я получаю сообщение о том, что

Объект доступен только для чтения, а свойство EntityState не может быть модифицирована. Используйте контекст для обновления объекта.

Кто-нибудь знает, что вызывает это?

4b9b3361

Ответ 2

У меня была та же проблема. Я переключился с

context.Update(object) 

to

context.UpdateObject(object) 

и это сработало.

Ответ 3

Чтобы избежать проблемы, вы можете просто использовать вспомогательные объекты update вместо использования извлеченной записи:

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

Примечание. Свойства объекта-помощника обновления, которые не заданы, просто игнорируются. Обновление не установит соответствующие поля записей в значение null

Ответ 4

Это сработало для меня:

recordToUpdate.EntityState = EntityState.Changed;

(recordToUpdate - это объект, подлежащий обновлению)

Ответ 5

Оказывается, это проблема с моим запросом linq, который извлекал объект в первую очередь. Когда я заменил это выражением запроса, он работал нормально.

Время, чтобы освежить мой linq!