因此,Dynamics CRM中的连接提供了将事物链接在一起的通用方法。
Connections实体内部具有Record1Id属性和Record2Id属性等。
创建connection via the UI时,CRM实际上“在数据库的Connection表中创建两个条目。每个条目允许您从原始记录或相关记录中搜索相关记录。< / EM>“
也就是说,如果连接A和B,它会将两行保存到(幕后)表中:
这样可以更轻松地搜索连接。如果您在连接上进行高级查找,则只需“单向搜索”即可进行搜索。
所以我的问题是:
当您通过API(后期绑定)创建Connections时,其类似于:
Entity connection = new Entity("connection");
connection["record1id"] = new EntityReference("contact", someContactId);
connection["record1objecttypecode"] = new OptionSetValue(2);
connection["record1roleid"] = new EntityReference("connectionrole", someConnectionRoleId);
connection["record2id"] = new EntityReference("incident", someCaseId);
connection["record2objecttypecode"] = new OptionSetValue(122);
connection["record2roleid"] = new EntityReference("connectionrole", someOtherConnectionRoleId);
var newId = service.Create(connection);
...如上所述“单向”创建它们就足够了,然后在幕后CRM将在两个方向上创建连接吗? ...或者您是否需要在两个方向上手动创建它们? (通过保存两次并交换record1id record2id值等)
或者换句话说,CRM API for Connections是否封装了“它实际上是幕后的两个连接”功能,还是你需要亲自手动处理它?</ p>
答案 0 :(得分:3)
您只需要创建一个连接记录。需要注意的一点是,我认为您不需要像上面那样设置类型代码。只需在实体引用中设置逻辑名就足够了。以下是SDK中的示例:
Connection newConnection = new Connection
{
Record1Id = new EntityReference(Account.EntityLogicalName,
_accountId),
Record1RoleId = new EntityReference(ConnectionRole.EntityLogicalName,
_connectionRoleId),
Record2RoleId = new EntityReference(ConnectionRole.EntityLogicalName,
_connectionRoleId),
Record2Id = new EntityReference(Contact.EntityLogicalName,
_contactId)
};
_connectionId = _serviceProxy.Create(newConnection);