2011-10-12 6 views
8

używam CRM 2011 i próbuje zaktualizować ownerid kontaktu przy użyciu tego kodu:Czy mogę zaktualizować identyfikator właściciela kontaktu za pomocą LINQ?

var crmContext = new CustomCrmContext(service); 

var contact = crmContext.Contact.FirstOrDefault(c=>c.Id == id); 
contact.OwnerId.Id= newOwnerId; 
crmContext.UpdateObject(contact); 
crmContext.SaveChanges(); 

ja nie otrzymuję żadnych błędów, jednak ownerid nigdy aktualizuje w bazie danych. Mogę aktualizować inne atrybuty, ale zastanawiam się, czy może OwnerId jest wyjątkowy i musisz użyć OrganizationRequest ("Assign")? Jeśli tak, to gdzie jest to udokumentowane, więc wiem, jakich innych atrybutów nie mogę zaktualizować?

Odpowiedz

12

Właściciel rekordu nie może być modyfikowany z aktualizacją. Zamiast tego musisz wysłać AssignRequest.

// Create the Request Object and Set the Request Object's Properties 
var request = new AssignRequest 
{ 
    Assignee = new EntityReference(SystemUser.EntityLogicalName, _newOwnerId), 
    Target = new EntityReference(Account.EntityLogicalName, _accountId) 
}; 


// Execute the Request 
_service.Execute(request); 
+0

Czy istnieje lista innych właściwości, które wymagają określonego obiektu żądania, lub czy jest to jedyny właściciel? – Daryl

+1

Status jest inny - myślę, że CRM generuje dwie klasy na jednostkę z wzorcem SetStateAccountRequest i SetStateAccountResponse. – glosrob

+1

Jak zwykle, brak ostrzeżenia od zestawu SDK, gdy to się nie powiedzie. – Ryan

Powiązane problemy