我在"预验证"中注册了一个Dynamics CRM插件。并在删除时触发。 我在其中有一个LINQ查询,它检索特定父记录的子记录的日期字段的最大值。
这是我的代码:
var q = (from e1 in serviceContext.CreateQuery<entity1>()
join e2 in serviceContext.CreateQuery<entity2>() on e1.typeid.Id equals e2.codeId
where e1.statecode == 0 && e1.ParentId.Id.Equals(new Guid(ParentGuidStr))
orderby e1.dt descending
select new {e1.dt, e2.code}).ToList();
我在上面的查询中收到以下错误当插件触发的记录是INACTIVE:
PreValidateEntity1Delete PlugIn错误: System.Reflection.TargetInvocationException:抛出了异常 通过调用的目标。 ---&GT; System.ArgumentNullException: 值不能为空。参数名称:g
我不知道为什么我收到上述错误,并且如果在LINQ查询中,非活动子记录和父记录之间的链接断开,或者还有其他原因。
答案 0 :(得分:2)
首先,请确保所有儿童记录都参考父记录。 然后,将你所在的地方改为:
where e1.statecode == 0 && e1.ParentId != null && e1.ParentId.Id.Equals(new Guid(ParentGuidStr))
问题是EntityReference字段(e1.ParentId
)可能为null,当您尝试访问null实体时,会出现错误。
然后因此,您还应该确保e1.typeid
在连接条件中也不为空。
或者,您可以尝试使用2个单独的查询进行解决方法,并从结果中收集信息。
祝你好运!