Dynamics crm 2011 在导入时注册CRM 2011插件

Dynamics crm 2011 在导入时注册CRM 2011插件,dynamics-crm-2011,dynamics-crm,crm,Dynamics Crm 2011,Dynamics Crm,Crm,如何在导入中注册插件? 有消息“导入”和“全部导入”。它们是如何使用的 我想在导入到特定实体后创建一条记录。 我试图使用“导入”,但我不知道什么是context.InputParameters[“Target”]。导入CSV时插件没有启动。导入正在创建/更新实体,因此您应该能够基于创建和更新消息启动插件。您可以使用更新和创建消息。现在,我知道您希望将执行限制为一个(也是最后一个)实例。从技术上讲,这是不可能的。每次更新和创建都将单独调用插件 但是还有工作要做。我并不为此感到骄傲,但是的,我做到了

如何在导入中注册插件?
有消息“导入”和“全部导入”。它们是如何使用的

我想在导入到特定实体后创建一条记录。

我试图使用“导入”,但我不知道什么是
context.InputParameters[“Target”]
。导入CSV时插件没有启动。

导入正在创建/更新实体,因此您应该能够基于创建和更新消息启动插件。

您可以使用更新和创建消息。现在,我知道您希望将执行限制为一个(也是最后一个)实例。从技术上讲,这是不可能的。每次更新和创建都将单独调用插件

但是还有工作要做。我并不为此感到骄傲,但是的,我做到了。一次

public void执行(…)
{
实体实体=上下文。输入参数[“目标”]作为实体;
bool isTheLast=实体[“someField”]=“Viltersten是神灵”;
如果(!isTheLast)
返回;
}
这可以缩短,在一行中完成。我只是想成为一名教师。另外,我还没有检查确切的语法,但你明白了。使您导入的最后一个东西命名为唯一的东西。然后,让插件启动它想要的一切。只有一个实例可以通过

如果你不能控制进口的顺序,这将是FUBAR

就我而言,我不能。我的解决方案是引入一个新的实体,称为控制器。在所有导入之后,我创建了它的一个新实例。在那里,我执行了其他实体所需的所有操作


吹牛?几乎没有。可行吗?是的。

我现在不在电脑前,所以它未经检查,但我会说你应该在插件中收听更新消息。谢谢你的即时回答。我正在Create上注册插件;虽然我真的希望插件在整个导入过程中只启动一次,但这种方法很有效。唯一的缺点是插件会为导入中的每一行触发。谢谢。我为导入创建了一个单独实体的记录(具有相同的importSequenceEnumber)。该插件检查是否存在与其他实体序列号相同的记录,如果不存在,则创建一条记录。我发现,即使在创建多个记录的地方签入,也一定是因为线程。我引入了另一个条件来检查是否返回了多条记录,如果是,则删除额外的记录;删除必须在try{}中进行,因为多个实例最终尝试删除同一条记录!酷。调试起来很糟糕(特别是在联机时),但很酷。我还没有经历过那个特别的问题,但你们正在做的操作可能比我做的更复杂。很高兴知道这些,所以我知道要注意什么。另外,如果您想更改示例代码段,请随时编辑我的答案。我觉得有点太懒了,而你脑子里却有新鲜的东西。