2012-09-21 2 views
1

У меня есть настраиваемая сущность с отношением один-много (ссылка, не родительский), определенный в Dynamics. Я использую CRMService. Я опубликовал свои изменения и обновил ссылку на webservice в своем проекте.Как вы ссылаетесь друг на друга в CRMService?

Как мне получить доступ к этим отношениям в моем коде? Как вы используете код CRMService для ссылки на отношения?

Я нашел код для многих для многих и понимаю, что это сложно, но как насчет одного?

Спасибо!

ответ

1

Каждые один ко многим отношений имеет два важных бит:

  1. имя - это разве используются так часто, но, например, контакт имеет отношение к ответу, который представляет собой первичный контакт для учетной записи, имя этого «account_primary_contact».
  2. Поле на множестве объектов (внешний ключ), в случае первичного контакта это «primarycontactid».

Предлагаем три основные вещи, которые вы можете сделать с отношением друг к другу (обратите внимание, что я использую ограниченные сущности в моих примерах здесь, я буду использовать отношения первичного контакта в своих фрагментах).

1. Создать связь между двумя записями

В основном вы просто заполнить внешний ключ с идентификатором вещь, которую вы хотите сделать ссылку.

//Create a contact 
Guid contactId = service.Create(new DynamicEntity("contact")); 

//Create a lookup which we will use to link the contact and account 
Lookup lookup = new Lookup(); 
lookup.Value = contactId; 
lookup.type = "contact"; 

//Create an account which is linked to the contact record 
DynamicEntity account = new DynamicEntity("account"); 
account["name"] = "Test Account"; 
account["primarycontactid"] = lookup; 
Guid accountId = service.Create(account); 

2. Узнайте, какие записи связаны этими отношениями

Так что это дело создания QueryExpression который либо использует LinkEntities:

LinkEntity link = new LinkEntity(); 
link.LinkFromEntityName = "contact"; 
link.LinkFromAttributeName = "contactid"; 
link.LinkToEntityName = "account"; 
link.LinkToAttributeName = "primarycontactid"; 

Или ConditionExpression, какие фильтры связанные с ними записи, связанные с вашей основной записью.

ConditionExpression condition = new ConditionExpression(); 
condition.AttributeName = "primarycontactid"; 
condition.Operator = ConditionOperator.Equal; 
condition.Values = new string [] { contactId.ToString() }; 

Полный примеры на MSDN.

3. Перерыв связь между двумя записями

Таким образом, это достигается путем установки внешнего ключа в NULL.

DynamicEntity account = new DynamicEntity("account"); 
account["primarycontactid"] = null; 
service.Update(account);