2013-04-04 78 views
1

因此,Dynamics CRM中的连接提供了将事物连接在一起的通用方法。Dynamics Crm:通过API创建连接实体

Connections实体内部具有Record1Id属性和Record2Id属性等等。

当你创建一个connection via the UI,CRM实际上是“在数据库中创建连接表的两个条目,每个条目可以搜索来自始发记录或相关记录的相关记录。

也就是说,如果连接A和B,这样可以节省两行的(幕后)表:

  • 一个与Record1Id = A和Record2Id = B
  • 和一个与Record1Id = B和Record2Id = A

这是为了使搜索连接更容易。如果您在连接上进行高级查找,则只需执行“单向搜索”即可。

所以我的问题是:

当通过API(后期绑定),它是这样创建的连接:

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值等)

或换言之,用于Connections的CRM API封装了“其背后的实际两个连接”功能,还是您需要手动处理你自己?

+1

这似乎喜欢的事,你可以测试速度比你可以问... – Daryl 2013-04-04 13:32:51

+1

我使用CRM Online中的StackOverflow的问题 - 我没有对数据库的任何访问在幕后。另外,如果其他人想知道同样的事情,这个问题将希望有一个答案... – codeulike 2013-04-04 13:35:58

回答

3

你只需要创建一个连接记录。有一点需要注意的是,我认为你不需要像上面那样设置typecode。只需在实体引用中设置逻辑名就够了。下面是从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); 
+0

好的,谢谢。您的示例使用早期绑定API,并使用延迟绑定。你认为创建一个连接对于后期API还是足够的吗? – codeulike 2013-04-04 15:05:19

+3

早期和晚期应该没有区别。无论如何,早期的界限只是使用被覆盖的实体类。使用类型代码也是一个坏主意,因为如果你有一个测试环境,或者你有一个实体,然后删除,然后重新添加,类型代码将不再匹配。 – Daryl 2013-04-04 16:06:32

相关问题