Dynamics CRM有一种特殊的关联关系叫Associate,一般常见于为用户分配角色、给团队添加用户、团队添加角色、队列添加用户等等。在一些特定场景下我们不可能把所有的操作都通过手动来完成尤其是用户量极大的客户这种手动操作不仅会工作量很大,而且数量一多也容易出错。所以建立一个规则用代码来实现这些操作会比手动操作安全方便的多。
但是这些操作又不能使用传统的给Guid赋值来完成,因为你会发现他们几个实体之间是不存在关联字段的。这个时候就需要使用Associate来进行关联。
上代码(以团队添加用户为例):
//用户赋值3用户 systemuser = target.Id; //查找teamid teamId = Guid.Parse("9517C5F2-C244-EB11-A827-0017FA038D8E"); adminService.Associate("team", teamId, new Relationship("teammembership_association"), new EntityReferenceCollection() { new EntityReference("systemuser", systemuser) });
我们需要两个参数一个是用户的Guid另一个是团队的Guid通过上面代码就可以建立Associate关系。当然这个关系也是可以去掉的。下面列出了常用的几种Associate操作
1、用户添加角色
adminService.Associate("systemuser",userId,new Relationship("systemuserroles_association"),new EntityReferenceCollection(){new EntityReference("role",roleId)});
2、移除用户角色
adminService.Disassociate("systemuser",userId,new Relationship("systemuserroles_association"),new EntityReferenceCollection(){new EntityReference("role",roleId)});
3、团队添加角色
adminService.Associate("team",teamId,new Relationship("teamroles_association"),new EntityReferenceCollection(){new EntityReference("role",roleId)});
4、移除团队角色
adminService.Disassociate("team",teamId,new Relationship("teamroles_association"),new EntityReferenceCollection(){new EntityReference("role",roleId)});
5、队列添加用户
adminService.Associate("queue",queueId,new Relationship("queuemembership_association"),new EntityReferenceCollection(){new EntityReference("systemuser",userid)});
6、移除队列用户
adminService.Disassociate("queue",queueId,new Relationship("queuemembership_association"),new EntityReferenceCollection(){new EntityReference("systemuser",userid)});
7、团队添加用户
adminService.Associate("team", teamId, new Relationship("teammembership_association"), new EntityReferenceCollection() { new EntityReference("systemuser", systemuser) });
8、移除团队用户
adminService.Disassociate("team", teamId, new Relationship("teammembership_association"), new EntityReferenceCollection() { new EntityReference("systemuser", systemuser) });