1

我有一个在 Dynamics 中定义的具有一对多关系(参考,非父母)的自定义实体。我正在使用 CRM 服务。我已经发布了我的更改并更新了我的项目中的 web 服务参考。

如何在我的代码中访问这种关系?您如何使用 CRMService 代码来引用关系?

我找到了一些多对多的代码并且理解这很困难,但是一对多呢?

谢谢!

4

1 回答 1

1

每个一对多关系都有两个重要的位:

  1. 名称 - 这不经常使用,但例如联系人与代表该帐户的主要联系人的帐户有关系,其名称是“account_primary_contact”。
  2. 许多实体(外键)上的一个字段,在主要联系人的情况下,这是“primarycontactid”。

使用一对多关系可以做三件主要的事情(注意,我在这里的示例中使用了后期绑定的实体,我将在我的片段中使用主要的联系关系)。

1.创建两条记录之间的链接

基本上,您只需使用要链接到的事物的 ID 填充外键。

//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.找出这些关系链接了哪些记录

所以这是创建一个使用 LinkEntities 的 QueryExpression 的例子:

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. 断开两条记录之间的联系

所以这是通过将外键设置为空来实现的。

DynamicEntity account = new DynamicEntity("account");
account["primarycontactid"] = null;
service.Update(account);
于 2012-09-23T23:03:55.267 回答