How to update a CRM 2011 Entity using LINQ in a Plugin?

后端 未结 3 821
难免孤独
难免孤独 2021-01-11 15:52

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.



        
相关标签:
3条回答
  • 2021-01-11 16:17

    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.

    0 讨论(0)
  • 2021-01-11 16:18

    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();

    0 讨论(0)
  • 2021-01-11 16:33

    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);
    }
        }
    
    0 讨论(0)
提交回复
热议问题