Luk*_*rms 5 c# dynamics-crm dynamics-crm-online dynamics-crm-2016
要使用C#代码禁用Dynamics CRM 2016用户,当前使用SetStateRequest.例:
var requestToDisableUser = new SetStateRequest()
{
EntityMoniker = new EntityReference("systemuser", userGuid),
State = new OptionSetValue(1),
Status = new OptionSetValue(-1)
};
organizationService.Execute(requestToDisableUser);
Run Code Online (Sandbox Code Playgroud)
但是,根据Microsoft的说法,不推荐使用SetStateRequest,应该使用Update替换它
但是当我尝试使用Update来禁用用户
示例时:
var userToDisable = new Entity("systemuser", userGuid)
{
["statecode"] = new OptionSetValue(1),
["statuscode"] = new OptionSetValue(-1)
};
service.Update(userToDisable);
Run Code Online (Sandbox Code Playgroud)
然后它引发错误:
未处理的异常:System.ServiceModel.FaultException`1 [Microsoft.Xrm.Sdk.OrganizationServiceFault]:'systemuser'实体不包含Name ='statecode'的属性.
这是事实,因为systemuser Entity没有状态代码.
systemuser Entity有一个IsDisabled属性,但该属性是只读的.
那么如何在不使用的情况下禁用/启用用户SetStateRequest呢?
我不认为\xe2\x80\x99t这是可能的,除非有人证明这是可能的。为了支持我的观点:最新的SDK(8.2.1.1;4/6/2017)仍然给出了一个SetStateRequest例子SDK\\SampleCode\\CS\\BusinessDataModel\\UsersAndRoles\\DisableOREnableUser.cs。因此,它应该是推荐的方法,无论它在文档的另一部分中被标记为已弃用。
您可以向 MS 支持发起一个事件,或者在 Connect 上提出建议;但根据我的经验,他们不太关心是否有解决方法。
\n