2017-01-19 1 views
2

Я испытал очень странное поведение моего API CRM 2011. Когда я пытаюсь обновить поле контакта originatingleadid от одного значения к другому, ничего не происходит. Никаких ошибок в коде, поэтому при выполнении кода все выглядит идеально. Но значение действительно не меняется.CRM: невозможно обновить OriginatingLeadId of Contact

Я написал простой способ проверить его и получил тот же результат. Вот оно.

class Program 
{ 
    private static IOrganizationService service; 

    static void Main(string[] args) 
    { 
     var contactId = Guid.Parse("B5A832D6-93DD-E611-ABAC-005056810E95"); 
     var leadId = Guid.Parse("8306E695-94DD-E611-ABAC-005056810E95"); 
     getService("admin", "password", "domain"); 

     SetOriginatingLead(contactId, leadId); 
    } 

    private static void SetOriginatingLead(Guid contactId, Guid leadId) 
    { 
     var entity = service.Retrieve("contact", contactId, 
new ColumnSet("originatingleadid")); 
     var targetlead = new EntityReference("lead", leadId); 
     entity["originatingleadid"] = targetlead; 
     service.Update(entity); 
     return; 
    } 

    private static void getService(string login, string password, string domain) 
    { 
     if (service != null) 
      return; 

     var cred = new ClientCredentials(); 
     cred.Windows.ClientCredential = 
new NetworkCredential(login, password, domain); 
     service = new OrganizationServiceProxy(new 
Uri(@"http://crm/organisation/XRMServices/2011/Organization.svc"), null, cred, null); 
      return; 
    } 
} 

Пожалуйста, скажите, где я ошибаюсь.

+0

Возможно, вы модифицируете первичный ключ. Таким образом, вы можете создать другую запись с исправлением, или база данных не позволяет изменить первичный ключ. – jdweng

+0

@jdweng, нет, это не первичный ключ в объекте Contact. –

ответ

3

Вы не можете обновить значение OriginatingLeadId. Это можно увидеть в файле EntityMetadata.xlsx с SDK.

OriginatingLeadId IsValidForUpdate=False

+0

Значит, он может быть установлен (первый раз), а затем никогда не изменяться? (За исключением редактирования значения в db) –

+0

Правильно: он автоматически устанавливается, когда вы квалифицируете провод и создается контакт. Вы никогда не должны редактировать значения непосредственно в базе данных. –

+1

Чтобы прояснить этот ответ: при создании объекта можно установить исходный элемент. Вы просто не можете установить его при обновлении объекта. Поэтому убедитесь, что вы создали свое право! (Вам не нужно квалифицировать руководство, чтобы убедиться, что это правильно установлено в коде) –