是时候抛开害羞模式,在 stackoverflow 上发表我的第一篇文章了。在进行了大量研究(插件、性能、索引、更新类型、朋友)并尝试了几种方法之后,我无法找到合适的答案/解决方案。
因此,如果可能的话,我想在 Microsoft Dynamics CRM 2013/2015 插件性能问题(或编码技术)方面获得您的反馈/帮助
设想:
Microsoft Dynamics CRM 2013/2015
2 具有关系 1:N
EntityA
EntityB的实体
EntityB 具有以下列:
Id | 实体 ID | ColumnDemoX (十进制) | ColumnDemoY(货币)
实体 A 有:500 条记录
实体 B 有:每条实体 A 记录有 150 条记录。所以 500*150 = 75000 条记录。
客观的:
创建一个 Post Entity A Plugin Update 以“模仿”以下 SQL 命令
Update EntityB
Set ColumnDemoX = (some quantity), ColumnDemoY = (some quantity) * (some value)
Where EntityAId = (some id)
一种方法可能是:
using (var serviceContext = new XrmServiceContext(service))
{
var query = from a in serviceContext.EntityASet
where a.EntityAId.Equals(someId)
select a;
foreach (EntityA entA in query)
{
entA.ColumnDemoX = (some quantity);
serviceContext.UpdateObject(entA);
}
serviceContext.SaveChanges();
}
问题:
post 插件更新中150 条记录的 foreach将需要20 秒或更长时间。
而
更新 EntityB 设置 ColumnDemoX = (一些数量), ColumnDemoY = (一些数量) * (一些值) 其中 EntityAId = (一些 id)
它将需要0.00001秒
有什么建议/解决方案吗?
谢谢大家的阅读。
H