博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
crm查询和删除审核历史记录
阅读量:7113 次
发布时间:2019-06-28

本文共 4218 字,大约阅读时间需要 14 分钟。

    using System;

    using System.Linq;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Query;
    using Microsoft.Crm.Sdk.Messages;
    using Microsoft.Xrm.Sdk.Messages;
    using System.Collections.Generic;

    /// <summary>

    /// 审核历史记录
    /// </summary>
    public class AuditHistory
    {
        /// <summary>
        /// 检索对特定属性所做的所有更改
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="Target">记录对象</param>
        /// <param name="attrName">字段名称</param>
        /// 特别说明:字段必须开启审核
        public void RetrieveAttributeHistory(IOrganizationService service, EntityReference target,string attrName)
        {
             RetrieveAttributeChangeHistoryRequest request = new RetrieveAttributeChangeHistoryRequest();
             request.AttributeLogicalName = attrName;
             request.Target = target;
             request.PagingInfo = new PagingInfo() { Count = 1000,PageNumber = 1 };
             RetrieveAttributeChangeHistoryResponse response = (RetrieveAttributeChangeHistoryResponse)service.Execute(request);
             //结果
             AuditDetailCollection auditDetailCollection = response.AuditDetailCollection;
        }

        /// <summary>

        /// 索对特定实体所做的所有更改
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="target">目标记录</param>
        public void RetrieveEntityHistory(IOrganizationService service, EntityReference target)
        {
            RetrieveRecordChangeHistoryRequest request = new RetrieveRecordChangeHistoryRequest();
            request.Target = target;
            request.PagingInfo = new PagingInfo() { Count = 1000,PageNumber = 1 };
            RetrieveRecordChangeHistoryResponse response = (RetrieveRecordChangeHistoryResponse)service.Execute(request);
            //结果
            AuditDetailCollection auditDetailCollection = response.AuditDetailCollection;
        }

        /// <summary>

        /// 删除包括在给定结束日期之前创建的审核数据的全部分区
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="endDate">结束日期</param>
        public void DeleteAudit(IOrganizationService service, DateTime endDate)
        {
            DeleteAuditDataRequest request = new DeleteAuditDataRequest();
            request.EndDate = endDate;
            DeleteAuditDataResponse response = (DeleteAuditDataResponse)service.Execute(request);
        }

        /// <summary>

        /// 删除审核记录
        /// </summary>
        /// <param name="service">服务</param>
        /// <param name="auditDetailCollection">记录集合</param>
        public void DeleteAudit(IOrganizationService service, AuditDetailCollection auditDetailCollection)
        {
            if (auditDetailCollection.AuditDetails != null && auditDetailCollection.AuditDetails.Count > 0)
            {
                ExecuteMultiple multiple = new ExecuteMultiple();
                multiple.AddDelete(auditDetailCollection.AuditDetails.Select(a => a.AuditRecord));
                multiple.Execute(service);
            }
        }

 

      

/// <summary>

    /// 批量操作
    /// </summary>
    public class ExecuteMultiple
    {
        private int len = 1500;
        private List<ExecuteMultipleRequest> list = new List<ExecuteMultipleRequest>();

        public ExecuteMultiple()

        {
            New();
        }

        public void New()

        {
            ExecuteMultipleRequest multiple = new ExecuteMultipleRequest()
            {
                Settings = new ExecuteMultipleSettings()
                {
                    ContinueOnError = false,
                    ReturnResponses = true
                },
                Requests = new OrganizationRequestCollection()
            };
            list.Add(multiple);
        }

        public void Add(OrganizationRequest request)

        {
            ExecuteMultipleRequest multiple = list.LastOrDefault();
            if (multiple.Requests.Count >= len)
            {
                New();
                multiple = list.LastOrDefault();
                multiple.Requests.Add(request);
            }
            else
            {
                multiple.Requests.Add(request);
            }
        }

        public void AddCreate(Entity en)

        {
            CreateRequest request = new CreateRequest() { Target = en };
            Add(request);
        }

        public void AddUpdate(Entity en)

        {
            UpdateRequest request = new UpdateRequest() { Target = en };
            Add(request);
        }

        public void AddDelete(EntityReference er)

        {
            DeleteRequest request = new DeleteRequest() { Target = er };
            Add(request);
        }

        public void AddDelete(Entity en)

        {
            AddDelete(new EntityReference() { LogicalName = en.LogicalName, Id = en.Id });
        }

        public void AddDelete(EntityCollection ec)

        {
            if (ec != null && ec.Entities.Count > 0)
            {
                AddDelete(ec.Entities);
            }
        }

        public void AddDelete(DataCollection<Entity> list)

        {
            if (list != null && list.Count > 0)
            {
                foreach (Entity en in list)
                {
                    AddDelete(en);
                }
            }
        }

        public void AddDelete(IEnumerable<Entity> list)

        {
            if (list != null && list.Count() > 0)
            {
                foreach (Entity en in list)
                {
                    AddDelete(en);
                }
            }
        }

        public void Execute(IOrganizationService service)

            {
                foreach (ExecuteMultipleRequest request in list)
                {
                    service.Execute(request);
                }
            }
    }

 

         
    }

转载于:https://www.cnblogs.com/clnchanpin/p/7261770.html

你可能感兴趣的文章
Atitit 编程语言常用算法attilax总结
查看>>
更改WAS Profiles的概要文件的server1的SDK版本
查看>>
Centos下MySQL主从同步配置
查看>>
如何在Node.js中合并两个复杂对象
查看>>
(笔记)VC6插件安装--Unable to register this add-in because its DllRegisterServer returns an error...
查看>>
【.net 深呼吸】细说CodeDom(7):索引器
查看>>
monolog使用
查看>>
【AtCoder010】B - Boxes(差分)
查看>>
三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF
查看>>
ES 相似度算法设置(续)
查看>>
46:八进制到十进制
查看>>
JAVA4种线程池的使用
查看>>
MonkeyRunner 模块
查看>>
ASP.NET Core实现OAuth2.0的AuthorizationCode模式
查看>>
Atitit tomcat在linux服务器的启动与其他
查看>>
C++/Php/Python 语言执行shell命令
查看>>
Oracle表空间维护总结
查看>>
12C -- ORA-01017
查看>>
约瑟夫环问题
查看>>
Compile、Make和Build的区别(as make, build, clean, run)
查看>>