我有一个自定义实体,在Dynamics中定义了一对多关系(引用,非父类)。我正在使用CRMService。我已发布更改并更新了项目中的Web服务引用。
如何在我的代码中访问此关系?您如何使用CRMService代码来引用关系?
我找到了一些多对多的代码并且理解这很难,但是一对多呢?
谢谢!
答案 0 :(得分:1)
每一对多的关系有两个重要的部分:
关于一对多关系可以做的三件事情(注意,我在这里的示例中使用了后期绑定实体,我将在我的片段中使用主要联系人关系)。
<强> 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。打破两个记录之间的链接
所以这是通过将外键设置为null来实现的。
DynamicEntity account = new DynamicEntity("account");
account["primarycontactid"] = null;
service.Update(account);