Пора оставить застенчивый режим позади и сделать свой первый пост о stackoverflow. Проведя множество исследований (плагины, производительность, индексы, типы обновлений, друзья) и попробовав несколько подходов, я не смог найти правильный ответ / решение.
Так что, если возможно, я хотел бы получить ваш отзыв / помощь в решении проблемы производительности плагина Microsoft Dynamics CRM 2013/2015 (или техники кодирования).
Сценарий:
Microsoft Dynamics CRM 2013/2015
2 объекта со связью 1: N
EntityA
EntityB
EntityB имеет следующие столбцы:
Id | EntityAId | ColumnDemoX (десятичный) | ColumnDemoY (валюта)
У объекта A: 500 записей
У объекта B: 150 записей на каждую запись объекта A. Итак, 500 * 150 = 75000 записей.
Задача:
Создание объекта публикации. Обновление подключаемого модуля для «имитации» следующей команды 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();
}
Проблема:
Выполнение foreach для 150 записей в обновлении плагина публикации займет 20 секунд или более.
В то время как
Обновление EntityB устанавливает ColumnDemoX = (некоторое количество), ColumnDemoY = (некоторое количество) * (какое-то значение), где EntityAId = (некоторый идентификатор)
это займет 0,00001 с.
Любое предложение / решение?
Спасибо всем за то, что прочитали.
H