Ответ 1
Вы должны пометить объект как измененный, чтобы он был отправлен на сервер. См. OrganizationServiceContext.UpdateObject(Entity)
Вы должны добавить
crmContext.UpdateObject(contact);
до crmContext.SaveChanges();
Мы можем создавать новые объекты без каких-либо проблем, но обновление существующего объекта в плагине это, похоже, не работает. Это для CRM 2011.
var crmContext = new CustomCrmContext(service);
var contact = crmContext.Contact.FirstOrDefault(c=>c.Id == targetEntity.Id);
contact.new_CustomField = "Updated";
crmContext.SaveChanges();
Вы должны пометить объект как измененный, чтобы он был отправлен на сервер. См. OrganizationServiceContext.UpdateObject(Entity)
Вы должны добавить
crmContext.UpdateObject(contact);
до crmContext.SaveChanges();
Не нужно загружать всю контактную запись, если у вас уже есть идентификатор, и вам просто нужно обновить поле или два. Вам также не нужен OrganizationServiceContext - просто Служба. Попробуйте что-то вроде:
var c = new contact() {
Id = targetEntity.Id,
new_CustomField = "Updated"
}
service.Update(c);
Это сначала сохранит обратную связь для запроса для контакта.
LINQ отлично, просто создайте новый объект или список и зациклируйте список в linq и обновите:
using (var crm = new XrmServiceContext(service)){
var foo = crm.nmipcs_productpriceitemSet
.Where(ppis => ppis.nmipcs_Account.Id == account.Id).ToList();
foreach (var nmipcsProductpriceitem in foo){
var f = new nmipcs_productpriceitem
{
Id = nmipcsProductpriceitem.Id
,
nmipcs_PriceSalesChannel = (decimal) 9.99
};
service.Update(f);
}
}