3

我有一个与或更多用户共享的实体记录。我想在停用它时取消共享此记录。我想在插件中做到这一点。但我不明白如何从共享列表中获取有权访问此记录的所有用户。怎么做?

这是我的代码片段:

    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”或“retrivedEntity”获取它。

4

1 回答 1

3

You need to use a RetrieveSharedPrincipalsAndAccessRequest

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

You can start from the included example, basically inside the foreach you call your RevokeAcessRequest

于 2013-06-03T13:37:35.967 回答