DYNAMICS 365 RETRIEVEMULTIPLE PLUGIN

在项目中,我们可能要处理一些数据,不让其通过高级查找或者视图列表中展示出来,这时候我们可以通过注册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输出的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dynamics 365 中,可以使用插件(Plugin)来实现批量更新。以下是一些步骤: 1. 创建一个插件。可以使用 Visual Studio 创建一个类库项目,然后添加一个新的类,并实现 IPlugin 接口。在插件类中,可以实现 Pre-Operation 或 Post-Operation 事件,以便在记录更新之前或之后执行插件逻辑。 2. 在插件类中,可以使用 Microsoft.Xrm.Sdk.Entity 类来获取和更新记录的属性。可以使用 EntityCollection 类来处理批量更新的记录集合。 3. 在插件类中,可以使用 IOrganizationService 接口的 Update 方法来更新记录。可以通过传递一个 Entity 对象来更新单个记录,或者传递一个 EntityCollection 对象来批量更新多个记录。 4. 将插件部署到 Dynamics 365 实例中。可以使用插件注册表(Plugin Registration Tool)或 PowerShell 脚本将插件部署到实例中。在注册插件时,需要指定插件的触发器(即实体和事件)以及插件的步骤(即插件的执行顺序和上下文)。 5. 测试插件。可以在 Dynamics 365 实例中创建一些记录,并尝试使用插件执行批量更新操作。可以查看记录的更新历史记录,以确保插件已正确执行。 需要注意的是,在使用插件进行批量更新时,需要考虑性能和安全性方面的问题。可以使用 FetchXML 或 LINQ 查询来过滤和排序记录,以确保只更新需要更新的记录。同时,需要确保插件逻辑不会影响系统的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值