Попытка обновить сущность Dynamics365 CRM из кода - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь обновить некоторые сущности в системе Dynamics365 CRM.

Для этой цели я создал класс сущностей с ранней привязкой, а также класс контекста, используя Xrm Toolbox.

У меня есть строка подключения в моем проекте, которая соединяет моего пользователя sys-admin с CRM, и я настроил соответствующий (типизированный) контекст для своих целей:

string connectionString = ConfigurationManager.ConnectionStrings["abc"].ConnectionString;

CrmServiceClient client = new CrmServiceClient(connectionString);
MyTypedContext context = new MyTypedContext(client);

Теперь я могу легко получить мою сущность из CRM, используя «альтернативный ключ», и посмотреть на все ее свойства:

MyEntityType item = _context.MyEntityTypes.FirstOrDefault(r => r.alternateKey == keyValue);

Теперь, в зависимости от некоторых условий, я бы хотел обновить некоторые значения для этой сущности - которые я сделал что-то вроде этого:

// set "approved" flag to true
item.Approved = true;

// set the date to right now
item.SomeDateValue = DateTime.Now;

Затем я попытался сохранить изменения обратно в CRM - но был удивлен, что вызов:

var saveResults = context.SaveChanges();

ничего не сделал - кажется, установка свойства класса сущности с ранней привязкой на самом деле не «регистрируются» как модифицирующие объект сущности .....

После того, как я добавил вызов UpdateObject() до SaveChanges, теперь изменения "видел":

context.UpdateObject(item);
var saveResults = context.SaveChanges();

однако, не смотря ни на что Я продолжаю сталкиваться с ошибкой:

Entity: MyEntityType не имеет действительного кода состояния

Почему это!?!? Я не изменил что-нибудь с помощью neiter "Statecode" или "Statuscode" этого объекта .... (и даже пытался явно установить их на допустимые значения вручную, прежде чем UpdateObject() не делает ошибка go прочь).

Есть идеи? Я свободен sh из вещей, чтобы проверить и искать ...

...