C# Dynamics Crm:通过API创建连接实体

C# Dynamics Crm:通过API创建连接实体,c#,dynamics-crm-2011,C#,Dynamics Crm 2011,因此,Dynamics CRM中的连接提供了一种通用的方式将事物连接在一起 在内部,Connections实体具有Record1Id属性和Record2Id属性 当您创建时,CRM实际上“在数据库的连接表中创建两个条目。每个条目都允许您从原始记录或相关记录中搜索相关记录。” 也就是说,如果连接A和B,它会将两行保存到(幕后)表中: 记录1ID=A和记录2ID=B的一个 还有一个记录1id=B,记录2id=A 这是为了使搜索连接更容易。如果您对连接执行高级查找,则只需执行“单向搜索” 所以我的

因此,Dynamics CRM中的连接提供了一种通用的方式将事物连接在一起

在内部,Connections实体具有Record1Id属性和Record2Id属性

当您创建时,CRM实际上“在数据库的连接表中创建两个条目。每个条目都允许您从原始记录或相关记录中搜索相关记录。”

也就是说,如果连接A和B,它会将两行保存到(幕后)表中:

  • 记录1ID=A和记录2ID=B的一个
  • 还有一个记录1id=B,记录2id=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值等)


或者,换句话说,连接的CRM API是否封装了“它实际上是两个幕后连接”功能,或者您需要自己手动处理该功能?

您只需要创建一个连接记录。需要注意的一点是,我认为您不需要像上面那样设置类型代码。只要在实体引用中设置逻辑名称就足够了。以下是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);

这似乎比你问StackOverflow问题更快,因为我在使用Crm Online,在幕后我没有任何访问数据库的权限。另外,如果其他人对同样的事情感到疑惑,这个问题将有望得到答案……好的,谢谢。您的示例使用的是早期绑定API,而我使用的是后期绑定API。您认为创建一个连接对于后期绑定的API也足够了吗?早期和晚期的连接应该没有区别。早期绑定只是在封面下使用后期绑定的实体类。使用类型代码也是一个坏主意,因为如果您曾经有一个测试环境,或者您有一个实体,然后删除,然后重新添加,那么类型代码将不再匹配。