crm多对多

多对多要使用service.Associate
传入两表的id
和中间表的

service.Associate("invoice", entityReferenceInvoice.Id,
new Relationship("new_invoice_new_contact20220111"), entityReferenceCollectionContact);
添加多对多的记录
service.Associate("当前entity","当前entityid","关系表名称","记录集合")
QueryExpression userque = new QueryExpression("systemuser");
userque.ColumnSet = new ColumnSet(true);
userque.Criteria.FilterOperator = LogicalOperator.And;
userque.Distinct = true;
//外键表名,用户id,外键表中的用户id
LinkEntity link = userque.AddLink("systemuserroles", "systemuserid", "systemuserid", JoinOperator.Inner);
link.EntityAlias = "Role";
//外键表名,角色id,外键表中的角色id
LinkEntity roleLink = link.AddLink("systemuserroles", "roleid", "roleid", JoinOperator.Inner);
//roleLink.Columns.AddColumn("name");
//userque.Criteria.AddCondition("country", "new_name", ConditionOperator.Equal, "United States");

//查用户中id等于excel的用户
userque.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, entityUser.Id.ToString());
roleLink.LinkCriteria.AddCondition("roleid", ConditionOperator.Equal, entityCollectionRole.Entities[0].Id.ToString());
EntityCollection systemUserRoles = server.RetrieveMultiple(userque);
//判断用户是否有此角色
if(systemUserRoles.Entities.Count == 0)
{
//没有角色的话添加
server.Associate("systemuser", entityUser.Id, new Relationship("systemuserroles_association"), new EntityReferenceCollection() { new EntityReference("role", entityCollectionRole.Entities[0].Id) });
taskContext.Logger.ConsoleInfo($"已为“" + userName + "”添加“"+ item + "”角色");

}

 

插件中使用

posted @ 2022-03-25 10:26  整只龙虾  阅读(52)  评论(0)    收藏  举报