We are able to create new entities without any issues, but updating an existing entity in a plugin this does not appear to be working. This is for CRM 2011.
No need to download the whole Contact record if you already have the Id and you just need to update a field or two. You also don't need the OrganizationServiceContext - just the Service. Try something like:
var c = new contact() {
Id = targetEntity.Id,
new_CustomField = "Updated"
}
service.Update(c);
This will save the roundtrip of querying for the contact first.
You have to mark the object as modified in order to get it submitted to the server. See OrganizationServiceContext.UpdateObject (Entity)
You should add
crmContext.UpdateObject(contact);
before crmContext.SaveChanges();
LINQ is fine, just create the new object or list and loop the list in the linq and update:
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);
}
}