역학 CRM - C # 플러그인 시스템 관리자 권한의 엔티티를 업데이트하기 위해

장면 설명 :

      1. CRM 시스템을 사용하는 경우, 기록 갱신의 다른 엔티티 엔티티에, 또는 (업데이트 (() 메소드 SDK 또는 updateObject를 사용할 필요가 포스트에 자동으로 업데이트 할 필요가 종종있다 ) 방법) 만 업데이트 방법의 구현, 당신은 업데이트 할 수있는 사용자 엔티티에 필요에 할당 할 수있는 권한이;

      때문에 CRM 시스템 2. 사용자 권한에 대해 구성 할 수 있으므로 사용자는 엔티티 권한 이제 엔티티 (실행 업데이트)의 업데이트에 사용자를 변경하지 않는 기본 구성 권한이 필요에 대응하기 위해 지정이 없을 수 있습니다.

      위의 두 점을 바탕으로, 우리는 다음과 같은 두 가지 방법을 업데이트 작업 플러그인을 수행하는 시스템 관리자를 사용할 수 있습니다 :

 

해결 방법 1 :

      (그렇지 않으면 나)에 Linq에를 사용하여 관리자 역할에 사용자 ID를 조회하고 업데이트를 수행하는 데 사용할 :

사용 (OrganizationServiceContext orgService = 새로운 OrganizationServiceContext (서비스)) 
{ 
    var에 systemUserId = ( 에서 userrole 에서 orgService.CreateQuery <Entities.SystemUserRoles> () 
                        역할 가입  orgService.CreateQuery을 <Entities.Role> () 
                        userrole.RoleId에는 role.Id 동일 
                        여기서 role.Name == " 시스템 관리자 " 
                        선택 (userrole.SystemUserId) .FirstOrDefault를); 

    경우 (systemUserId! = null이 )  
    {
        IOrganizationService 시스템 서비스 =factory.CreateOrganizationService (systemUserId);
        SystemService.Update (NEW_ENTITY); 
    } // ! 최종 경우 systemUserId = NULL 
}

      현재 사용자가 관리자 역할의 사용자 ID를 얻을 수없는 권한 대응표를 읽을 수있는 권한을 가지고 있지 않은 경우,로 이어질 것입니다 : 사용자 역할의 요청에 의한 이러한 공동 시스템의 존재는 관리자 역할의 사용자 ID가 큰 단점을 접근 얻을 수 코드는 업데이트 작업을 수행하지 않습니다. 그것은 여기에 나열이 방법은 사용하지 않는 것이 좋습니다.

 

해결 방법 2 :

      CreateOrganizationService는 ()는 직접 서비스를 생성 관리자로 순위가 아닐 때 관리자 역할에있어서의 사용자 ID를 조회함으로써, 직접 null 파라미터를 전달한다.

시스템 서비스 IOrganizationService = factory.CreateOrganizationService ( ); 
SystemService.Update (NEW_ENTITY);

        권한이 실패를 업데이트해야하기 때문에이 방법을 사용하여 업데이트 작업을 수행하는 것이 좋습니다, 그것은 문제가 발생하지 않습니다.

추천

출처www.cnblogs.com/Sunny20181123/p/10939261.html