【发布时间】:2014-03-03 13:20:02
【问题描述】:
我有一个在预删除操作时触发的插件。在插件内部,我需要运行 linq 查询以获取与触发插件的实体相关的另一个实体的 guid 列表。
在此插件中使用我的查询时,它不会返回任何数据,但是当我从更新后操作插件运行相同的查询时,它会返回数据。
我不确定问题是否与预删除操作或其他问题有关。 请注意,EntityA 是插件触发的实体。
这是我的代码,非常感谢您的帮助:
using (var serviceContext = new OrganizationServiceContext(service))
{
Entity bEntity = new Entity("EntityB");
serviceContext.AddObject(bEntity);
var qTr = from n in serviceContext.CreateQuery<EntityB>()
where n.field.Id.Equals(new Guid(EntityAGuid.ToString()))
select n.EntityBguid;
foreach (var trGuid in qTr)
{
service.Delete("EntityB", (Guid)trGuid);
}
}
【问题讨论】:
-
如果我对我的插件使用 Post Delete 操作,我会收到以下错误:PostPluginDelete PlugIn 中的错误:System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]:EntityA Id = 2zdd8418-7793-e311-5537-555556836fb7 不存在(故障详细信息等于 Microsoft.Xrm.Sdk.OrganizationServiceFault)。
-
当我在预验证阶段注册我的插件时。它工作正常。
-
您找到解决方案了吗?
-
我正在做一件非常相似的事情,根据 Daryl 的回答,它可能与单独的上下文有关,我将 LINQ 查询转换为查询表达式并直接使用插件的上下文。仍然没有结果。如果这确实是一个 PRE 操作,那么该项目不应该被删除。虽然看起来引用已经以某种方式断开了。
-
我尝试使用 Pre-Validation 事件在 PluginExecutionContext 上添加有关对 SharedVariables 的旧引用的信息。但是,Pre-Operation 事件似乎具有一组全新的共享变量,因为列表始终为空。我真的很好奇 Pre-Operation 中实际发生了什么,因为如果实体实际上在删除之前,它应该仍然存在。
标签: linq dynamics-crm-2011 dynamics-crm