現在、Web サイトから CRM をクエリすると、応答時間が遅い (1 分以上) という問題に直面しています。Web サービスを介して CRM 2011 を使用しています。調査したところ、CRM をクエリする時点で時間が費やされていることがわかりました。
CrmSvcUtil.exe を使用して、CRM エンティティにマップするプロキシ クラスを生成しました。次に、コンテキストのインスタンスを作成し、C# で LINQ を使用して CRM をクエリします。
クエリを実行するときは、LINQ to CRM を使用して親オブジェクトを読み込み、次に LoadProperty を使用して関連する子を読み込みます。
CRM のクエリに別の方法を使用している人がいるかどうか、実装でこのような問題に遭遇したことがあるかどうかを知りたいです。
簡単なサンプル クエリを以下に示します。
public void SelectEventById(Guid id)
{
var crmEventDelivery = this.ServiceContext.EventDeliverySet.FirstOrDefault(eventDelivery => eventDelivery.Id == id);
if (crmEventDelivery != null)
{
this.SelectCrmEventDeliveryWithRelationships(crmEventDelivery);
}
}
private void SelectCrmEventDeliveryWithRelationships(EventDelivery crmEventDelivery)
{
// Loading List of Venue Delivery on parent crmEventDelivery thats been passed
this.ServiceContext.LoadProperty(crmEventDelivery, Attributes.EventDelivery.eventdelivery_venuedelivery);
foreach (var venueDelivery in crmEventDelivery.eventdelivery_venuedelivery)
{
// Loading Venue on each Venue Delivery
ServiceContext.LoadProperty(venueDelivery, Attributes.VenueDelivery.venue_venuedelivery);
}
// Loading List of Session Delivery on parent crmEventDelivery thats been passed
this.ServiceContext.LoadProperty(crmEventDelivery, Attributes.EventDelivery.eventdelivery_sessiondelivery);
foreach (var sessionDelivery in crmEventDelivery.eventdelivery_sessiondelivery)
{
// Loading Presenters on each Session Delivery
ServiceContext.LoadProperty(sessionDelivery, Attributes.SessionDelivery.sessiondelivery_presenterbooking);
}
}