Я пытаюсь обновить некоторые сущности в системе 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 из вещей, чтобы проверить и искать ...