恥ずかしがり屋のモードを後にして、stackoverflow に最初の投稿をする時が来ました。たくさんの調査 (プラグイン、パフォーマンス、インデックス、更新の種類、友達) を行った後、いくつかのアプローチを試した後、適切な答え/解決策を見つけることができませんでした。
可能であれば、Microsoft Dynamics CRM 2013/2015 プラグインのパフォーマンスの問題 (またはコーディング テクニック) に関するフィードバック/ヘルプを取得したいと思います。
シナリオ:
Microsoft Dynamics CRM 2013/2015
1:N の関係を持つ 2 つのエンティティ
EntityA
EntityB
EntityBには次の列があります。EntityAId | ColumnDemoX (10 進数) | 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)
1つのアプローチは次のとおりです。
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();
}
問題:
プラグイン更新後の150 レコードの foreach には20 秒以上かかります。
Update EntityB
Set ColumnDemoX = (いくつかの数量), ColumnDemoY = (いくつかの数量) * (いくつかの値) Where EntityAId = (いくつかの ID) 0.00001秒
かかります
提案/解決策はありますか?
読んでくれてありがとう。
H