Каждые один ко многим отношений имеет два важных бит:
- имя - это разве используются так часто, но, например, контакт имеет отношение к ответу, который представляет собой первичный контакт для учетной записи, имя этого «account_primary_contact».
- Поле на множестве объектов (внешний ключ), в случае первичного контакта это «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);