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); }
}
转载于:https://www.cnblogs.com/bennylam/p/9921425.html