using System;

    using Microsoft.Xrm.Sdk;

    using Microsoft.Xrm.Sdk.Messages;

/// <summary>

    /// 安全字段

    /// </summary>

    public class FieldSecurityProfileHelper

    {

        public static readonly string entityName = "fieldsecurityprofile";

        public static readonly string FieldPermission = "FieldPermission";

        public Guid fieldSecurityProfileId = Guid.Empty;

        public Guid fieldPermissionId = Guid.Empty;

/// <summary>

        /// 创建安全字段

        /// </summary>

        public void Create(IOrganizationService service)

        {

            Entity en = new Entity() { LogicalName = entityName };

            en["name"] = "new_name";

            fieldSecurityProfileId = service.Create(en);

        }

/// <summary>

        /// 给安全字段加入团队

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="teamId">团队</param>

        public void AddTeam(IOrganizationService service,Guid teamId)

        {

            AssociateRequest request = new AssociateRequest();

            request.Relationship = new Relationship("teamprofiles_association");

            request.Target = new EntityReference() { LogicalName = entityName,Id = fieldSecurityProfileId };

            request.RelatedEntities = new EntityReferenceCollection();

            request.RelatedEntities.Add(new EntityReference() { LogicalName = "team" ,Id = teamId });

            service.Execute(request);

        }

/// <summary>

        /// 给安全字段移除团队

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="teamId">团队</param>

        public void RemoveTeam(IOrganizationService service, Guid teamId)

        {

            DisassociateRequest request = new DisassociateRequest();

            request.Relationship = new Relationship("teamprofiles_association");

            request.Target = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId };

            request.RelatedEntities = new EntityReferenceCollection();

            request.RelatedEntities.Add(new EntityReference() { LogicalName = "team", Id = teamId });

            service.Execute(request);

        }

/// <summary>

        /// 给安全字段加入用户

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="teamId">用户</param>

        public void AddUser(IOrganizationService service,Guid userId)

        {

            AssociateRequest request = new AssociateRequest();

            request.Relationship = new Relationship("systemuserprofiles_association");

            request.Target = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId };

            request.RelatedEntities = new EntityReferenceCollection();

            request.RelatedEntities.Add(new EntityReference() { LogicalName = "systemuser", Id = userId });

            service.Execute(request);

        }

/// <summary>

        /// 给安全字段移除用户

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="teamId">用户</param>

        public void RemoveUser(IOrganizationService service,Guid userId)

        {

            DisassociateRequest request = new DisassociateRequest();

            request.Relationship = new Relationship("systemuserprofiles_association");

            request.Target = new EntityReference() { LogicalName = entityName, Id = fieldSecurityProfileId };

            request.RelatedEntities = new EntityReferenceCollection();

            request.RelatedEntities.Add(new EntityReference() { LogicalName = "systemuser", Id = userId });

            service.Execute(request);

        }

/// <summary>

        /// 把安全字段和实体关联

        /// </summary>

        /// <param name="service">服务</param>

        /// <param name="entity">实体</param>

        public void CreateAttribute(IOrganizationService service,string entity)

        {

            Entity en = new Entity() { LogicalName = FieldPermission };

            //实体名称

            en["entityname"] = entity;

            en["canread"] = new OptionSetValue(FieldPermissionType.Allowed);

            en["attributelogicalname"] = "new_attributename";

            en["fieldsecurityprofileid"] = new EntityReference() { LogicalName = entityName,Id = fieldSecurityProfileId };

            fieldSecurityProfileId = service.Create(en);

        }

/// <summary>

        /// 删除实体里面的安全字段

        /// </summary>

        /// <param name="service">服务</param>

        public void RemoveAttribute(IOrganizationService service)

        {

            service.Delete(FieldPermission, fieldSecurityProfileId);

        }

/// <summary>

        /// 删除安全字段

        /// </summary>

        public void Delete(IOrganizationService service)

        {

            service.Delete(entityName, fieldSecurityProfileId);

        }

    }

crm操作安全字段的更多相关文章

  1. mysql数据表的基本操作:表结构操作,字段操作

    本节介绍: 表结构操作 创建数据表. 查看数据表和查看字段. 修改数据表结构 删除数据表 字段操作 新增字段. 修改字段数据类型.位置或属性. 重命名字段 删除字段 首发时间:2018-02-18  ...

  2. oracle 下操作blob字段是否会产生大量redo

    操作blob字段是否会产生大量redo,答案是不会.以下来做一个实验,測试数据库版本号是11.2.0.1.0: --创建一张表做測试之用 create table test_blob (   id n ...

  3. django之model,crm操作

    一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pr ...

  4. (18)模型层 -ORM之msql 多表操作(字段的属性)

    数据库表的对应关系 1.一对一   #关联字段写在那张表都可以 PS:只要写OneToOneField就会自动加一个id 2.一对多  #关系确立,关联字段写在多的一方 3.多对多   #多对多的关系 ...

  5. Dynamics CRM 之汇总字段

    用插件汇总数据,速度很慢,导数据的时候更慢!那就用汇总字段- - 新建个汇总字段,字段类型选择汇总.点击编辑进入逻辑编辑 相关实体:对当前实体或者相关联的实体的字段值进行判断筛选. 筛选器:对相关实体 ...

  6. crm操作业务部门

    using System;     using System.Linq;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messag ...

  7. 1122 django属性操作orm字段数据操作

    目录 1. 静态文件的配置 手动静态文件的访问资源 静态文件的动态绑定 2.request方法 2.1 请求方式 2.2 获取前端的请求方式 request.method 2.3 request方法 ...

  8. 【转载】JDBC操作LOB字段

    转自:http://www.cnblogs.com/tengtao93/p/4984689.html 1.LOB(Large Objects)大对象,是用来存储大量的二进制和文本数据的一种数据类型(一 ...

  9. Dynamics CRM - 不同类型字段在 Plugin 里的赋值方式

    在编写 Plugin 代码之前,我们可以需要用 SDK bin 目录下的 CrmSvcUtil.exe 来将 CRM Site 上所有的 Entity 转换成类,而 Entity 里的 Field 也 ...

随机推荐

  1. Axure自动备份功能!让意外不在可怕!

    忘记保存了......... 电脑意外重启了............... 不小心删除了.......................... 每次做axure的时候,多有了太多的意外了! 萧何今天在微 ...

  2. [欧拉回路+手动开栈] poj 1780 Code

    题目链接: http://poj.org/problem? id=1780 Code Time Limit: 1000MS   Memory Limit: 65536K Total Submissio ...

  3. jquery如何在加载完iframe的内容后才进行下一步操作

    为iframe添加onload事件 ie使用attachEvent("onload",function(){}) firefox.chrome使用addEventListener( ...

  4. 486E - LIS of Sequence(LIS)

    题意:给一个长度为n的序列.问每一个数关于序列的LIS(longest increasing subsequence)是什么角色. 这里分了三种: 1.此数没有出如今随意一条LIS中 2.此数出如今至 ...

  5. 类CL_ABAP_TYPEDESCR,动态取得运行时类型

    有时候我们要在程序运行的时候取得某个内表或者某个结构它的属性或者它的字段的属性,可能通过类CL_ABAP_TYPEDESCR和它的子类取得指定内表的属性.类CL_ABAP_TYPEDESCR和它的子类 ...

  6. uva 140

    思路:暴力+剪枝 uva140 wa了好多次……数组开小了……!!! #include <iostream> #include <cstdio> #include <cm ...

  7. HUNNU11342:Chemistry(模拟)

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11342 Problem description The ch ...

  8. HDOJ 2442 -bricks 状态压缩DP 一直TLE.打表过的..

    有5个砖块..加上一个空着不放..那么有6种状态..所以很明显的可以用6进制的状态DP... 不过这么做..我觉得我已经能优化的都优化了...还是超时..一看数据范围是100*6..打表先AC了.. ...

  9. flexbox语法(摘抄)

    flex 容器上的属性: flex-direction: row | row-reverse | column | column-reverse (项目的排列方向) flex-wrap : nowra ...

  10. C#多线程实现方法——Task/Task.Factary

    原文:C#多线程实现方法--Task/Task.Factary Task 使用 Task以及Task.Factory都是在.Net 4引用的.Task跟Thread很类似,通过下面例子可以看到. st ...