DYNAMICS 365 RETRIEVEMULTIPLE PLUGIN

本文介绍如何通过注册 CRM 系统中的 RetrieveMultiple PostOperation 插件来修改查询结果,避免敏感数据在高级查找和视图列表中显示。示例代码展示了如何创建一个插件,处理 BusinessEntityCollection 输出,从而改变查询到的零售销售记录。
摘要由CSDN通过智能技术生成

在项目中,我们可能要处理一些数据,不让其通过高级查找或者视图列表中展示出来,这时候我们可以通过注册RetrieveMultiple消息的插件来处理。

我们可以通过注册RetrieveMultiple的Post Operation插件,然后处理它的输出结果BusinessEntityCollection来改变查询结果。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;

namespace Carl.OverrideRMUCI
{
public class GetRetailSales : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// Here we will simulate connecting to a 3rd party environment

        #region simulate3rdparty
        // Create a list of Retail Sales that would exist in a database in another system
        var retailSales = new List<RetailSale>();
        var retailSales1 = new RetailSale
        {
            Product = "Product1",
            Amount = 1
        };
        var retailSales2 = new RetailSale
        {
            Product = "Product2",
            Amount = 5
        };
        var retailSales3 = new RetailSale
        {
            Product = "Product3",
            Amount = 10
        };

        retailSales.Add(retailSales1);
        retailSales.Add(retailSales2);
        retailSales.Add(retailSales3);
        #endregion

        // Plugin Code
        IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

        EntityCollection entityCollection = new EntityCollection();
        entityCollection.EntityName = "crc07_retailsale";

        foreach (var retailSale in retailSales)
        {
            Guid guid = new Guid();
            guid = Guid.NewGuid();

            Entity crmRetailSale = new Entity("crc07_retailsale");
            crmRetailSale.Attributes.Add("crc07_retailsaleid", guid);
            crmRetailSale.Attributes.Add("crc07_product", retailSale.Product);
            crmRetailSale.Attributes.Add("crc07_amount", retailSale.Amount);
            entityCollection.Entities.Add(crmRetailSale);
        }

        context.OutputParameters["BusinessEntityCollection"] = entityCollection;
    }
}
public class RetailSale
{
    public string Product { get; set; }
    public Int32 Amount { get; set; }
}

}

可以通过改写BusinessEntityCollection来达到改变查询结果的目的。
注意只能注册post插件,pre插件是没有BusinessEntityCollection输出的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值