MS Dynamics CRM。获取当前记录与之共享的用户

时间:2013-06-03 12:35:45

标签: entity dynamics-crm-2011 dynamics-crm record sharing

我有一个与多个用户共享的实体记录。我想取消激活它时取消共享此记录。我想在插件中做到这一点。但我无法理解如何让共享列表中的所有用户都能访问此记录。怎么做?

这是我的代码段:

    protected void ExecutePostPersonSetStateDynamicEntity(LocalPluginContext localContext)
    {
        if (localContext == null)
        {
            throw new ArgumentNullException("localContext");
        }

        var context = localContext.PluginExecutionContext;

        var targetEntity = (Entity)context.InputParameters["EntityMoniker"];
        var state = (OptionSetValue)context.InputParameters["State"];
        var columns = new ColumnSet(new[] { "statecode" });

        var retrivedEntity = localContext.OrganizationService.Retrieve(targetEntity.LogicalName, targetEntity.Id, columns);

        if (state.Value == 1)
        {
            RevokeAccessRequest revokeRequest = new RevokeAccessRequest()
            {
                Target = new EntityReference(personEntity.LogicalName, personEntity.Id),
                Revokee = new EntityReference(neededEntity.LogicalName, needed.Id)
            };

            // Execute the request.
        }
    }

正如你所看到的,我需要一个实体“neededEntity”,我不知道如何从“targetEntity”或“retrieveEntity”中获取它。

1 个答案:

答案 0 :(得分:3)

您需要使用RetrieveSharedPrincipalsAndAccessRequest

http://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.retrievesharedprincipalsandaccessrequest.aspx

您可以从包含的示例开始,基本上在您调用foreach

RevokeAcessRequest内部